Jump to content

asusta099

Members
  • Content Count

    20
  • Joined

  • Last visited

  • Days Won

    2

asusta099 last won the day on April 14 2016

asusta099 had the most liked content!

About asusta099

  • Rank
    Novato

Recent Profile Visitors

1,240 profile views
  1. Lo digo porque posteas las cosas de LenNT y todo lo que hace el tiene crash hasta el culo
  2. ¿Ya corregiste el crash que tumba el servidor cuando más de diez personas lo usan? Igual deberías agregar ese detalle.
  3. Buenas, Como saben la guerra total es un evento creado hace mucho tiempo por Rinnegan el cual vendía meramente en quest, pero tenía un gran defecto el cual consistía en que necesitabas alubias para no terminar cruel en plena guerra total, aveces un usuario al no poder consumir esa alubia en buen tiempo terminaba dropeando parte de su equipo y causaba la molestia o perdida de objetos, un evento defectuoso, además de no poder conocer como quedaba el resto de los jugadores o ver quién ha ganado esto, por lo que en su tiempo igualmente me dí a la tarea de poner un parche en el código fuente que espero les sirva. Primero debemos buscar y abrir el archivo: char_battle.cpp Buscamos: #include "threeway_war.h" Después de colocamos: #define ZONE_WAR(map) (236==(map)) En caso de no querer el drop de objetos si uno tiene karma negativo. Buscamos: TItemDropPenalty aItemDropPenalty_kor[9] = Y lo reemplazamos por: TItemDropPenalty aItemDropPenalty_kor[9] = { { 0, 0, 0, 0 }, // ¼±¿Õ { 0, 0, 0, 0 }, // ¿µ¿õ { 0, 0, 0, 0 }, // ¼ºÀÚ { 0, 0, 0, 0 }, // ÁöÀÎ { 0, 0, 0, 0 }, // ¾ç¹Î { 0, 0, 0, 0 }, // ³¶ÀÎ { 0, 0, 0, 0 }, // ¾ÇÀÎ { 0, 0, 0, 0 }, // ¸¶µÎ { 0, 0, 0, 0 }, // ÆÐ¿Õ }; Buscamos: } if (!isAgreedPVP && !isUnderGuildWar && !IsKillerMode() && GetAlignment() >= 0 && !isDuel && !isForked) Y antes de esto colocamos: if (ZONE_WAR(GetMapIndex())) { std::auto_ptr<SQLMsg> pMsg(DBManager::instance().DirectQuery("SELECT pID FROM ranking_zone_war WHERE pID = %u", pkKiller->GetPlayerID())); if (pMsg->Get()->uiNumRows == 0) { std::auto_ptr<SQLMsg> pMsgK (DBManager::instance().DirectQuery("INSERT INTO ranking_zone_war%s(pID) VALUES('%d')", get_table_postfix(), pkKiller->GetPlayerID())); if (pMsgK->uiSQLErrno != 0) { ChatPacket(CHAT_TYPE_NOTICE, "[WAR] You can't update kill in this moment!"); } } else { SQLMsg *pMsgKill; pMsgKill = DBManager::instance().DirectQuery("UPDATE player.ranking_zone_war SET lkill_point = lkill_point + '1' WHERE pID = %u", pkKiller->GetPlayerID()); if (pMsgKill->uiSQLErrno != 0) { ChatPacket(CHAT_TYPE_NOTICE, "[WAR] You can't update kill in this moment!"); } } Buscamos: else { FPartyAlignmentCompute f(-20000, pkKiller->GetX(), pkKiller->GetY()); pkKiller->GetParty()->ForEachOnlineMember(f); if (f.m_iCount == 0) pkKiller->UpdateAlignment(-20000); Y antes de eso colocamos: if (ZONE_WAR(GetMapIndex())) { // NO RETURN (BUG DEAD) } Buscamos: FPartyAlignmentCompute f(-20000, pkKiller->GetX(), pkKiller->GetY()); pkKiller->GetParty()->ForEachOnlineMember(f); if (f.m_iCount == 0) pkKiller->UpdateAlignment(-20000); else { sys_log(0, "ALIGNMENT PARTY count %d amount %d", f.m_iCount, f.m_iAmount); f.m_iStep = 1; pkKiller->GetParty()->ForEachOnlineMember(f); } } } else { Y antes de eso colocamos: if (ZONE_WAR(GetMapIndex())) { // NO RETURN (BUG DEAD) } Ahora vamos a nuestra base de datos y colocamos el siguiente SQL dentro de la carpeta player: /* Navicat MySQL Data Transfer Source Server : TestServer Source Server Version : 50634 Source Host : 5.149.2.39:3306 Source Database : player Target Server Type : MYSQL Target Server Version : 50634 File Encoding : 65001 Date: 2017-01-05 12:19:42 */ SET FOREIGN_KEY_CHECKS=0; -- ---------------------------- -- Table structure for `ranking_zone_war` -- ---------------------------- DROP TABLE IF EXISTS `ranking_zone_war`; CREATE TABLE `ranking_zone_war` ( `pID` int(11) NOT NULL, `lkill_point` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`pID`), KEY `pID` (`pID`) USING BTREE ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -- ---------------------------- -- Records of ranking_zone_war -- ---------------------------- Con esto ya podrían quitar que la quest de alubias y además las consuma, el mapa debe ser el Index 236, en caso de no serlo o cambiarlo, deben cambiarlo en el define del principio. Adjunto archivo guía si es complicado seguir los pasos. Saludos! FIX - KILL IF WarTotal + TOP C++, SQL.rar
  4. Buenas, Como saben yo no he sido de la idea de vender las cosas que son sencillas de hacer y mucho menos lucrar por estos medios con las web de otras personas, esta web se encontraba elaborada en el framework symfony, sin embargo yo no conocía ese framework más que de vista, por esto me dí a la tarea de hacerla en PHP hace tiempo, así que espero les guste, el SCRIPT de registro fue corregido por un compañero mío. Espero les guste mi aporte. Link de descarga: [Hidden Content] Creditos a LovelPlay por el diseño. El fondo viene junto al logo, si quieren otro fondo les aconsejo hablar con LovePlay, amenos que el ponga el PSD aquí, por respeto a su trabajo yo no lo liberaré, la otra opción es que hagan uno propio ustedes. ¡Saludos!
  5. Eso es reventa, para que dejara de ser reventa deberías hacer tu propio código y venderlo o agregar el costo del sistema y darselo a quien te lo vendió, no agregar lo de los demas y venderlo sin darle al creador, pero tu bajo nivel de programación en C++ no te permitiría hacer algo así, por otro lado deja de fastidiar a la gente , que estas metiendo las manos en un lugar de donde no te gustará salir.
  6. Realmente no hay un modo, lo único que podrías hacer es virtualizar un SO en Unix y re-dirigir ahí todo, claro deberías instalar MySQL en esa plataforma y entender que debes arrancar el motor de MySQL, otra forma muy sencilla es que igualmente descargues MySQL para Windows y lo arranques por consola de comandos, pero si no mal recuerdo si necesitarías arrancarlo de algún modo. ¡Saludos!
  7. No no, me estás mal interpretando, mira te explico, lo que necesito es en la parte de los items la estructura de la tabla, es decir como va el tema de los socket y eso, los títulos, lo que hace el código es seleccionar por orden todos los parametros y despues los va inyectando poco a poco, en la tabla del item, lo que te está fallando está en el tema de los socket que no anexa correctamente los 3 socket necesarios para poder insertar las piedras, para que te des una idea mejor. "SELECT vnum, pret, attrtype0, attrvalue0, attrtype1, attrvalue1, attrtype2, attrvalue2, attrtype3, attrvalue3, attrtype4, attrvalue4, attrtype5, attrvalue5, attrtype6, attrvalue6, socket0, socket1, socket2 FROM ".SQL_HP_DB.".dev_is_items WHERE id='".$_GET['id']."'"; Ahí seleccionas por órden de la tabla dev_is_item.sql. "INSERT INTO player.item (owner_id,window,pos,count,vnum,attrtype0, attrvalue0, attrtype1, attrvalue1, attrtype2, attrvalue2, attrtype3, attrvalue3, attrtype4, attrvalue4, attrtype5, attrvalue5, attrtype6, attrvalue6, socket0, socket1, socket2) VALUES ('".mysql_real_escape_string($_SESSION['user_id'])."','MALL','".$possiblePos[0]."','1','".$getItem->vnum."','".$getItem->attrtype0."', '".$getItem->attrvalue0."', '".$getItem->attrtype1."', '".$getItem->attrvalue1."', '".$getItem->attrtype2."', '".$getItem->attrvalue2."', '".$getItem->attrtype3."', '".$getItem->attrvalue3."', '".$getItem->attrtype4."', '".$getItem->attrvalue4."', '".$getItem->attrtype5."', '".$getItem->attrvalue5."', '".$getItem->attrtype6."', '".$getItem->attrvalue6."', '".$getItem->socket0."', '".$getItem->socket1."', '".$getItem->socket2."')";$qryItem=mysql_query($sqlItem,$sqlServ) or die(mysql_error()); Aquí insertas el item seleccionado en la tabla deseada contemplando lo siguiente: owner_id = $_SESSION['user_id'] window = MALL pos = .$possiblePos[0]." count = 1 vnum = vnum, siguiendo ese orden. Lo que necesitas saber es si tu table de la itemShop se toma de manera correcta y esos valores igualmente se colocan de esa misma forma en tu tabla player.item, es decir que les coloca como debe ser, te daré otro ejemplo, si pusieras una armadura +0, por la falla que tienes no te dejaría colocar de manera correcta las piedras, pero si le subieras a +1, debería dejarte correctamente, entonces el problema debe estár o en el SQL al no tener bien los parametros ya que veo que están algo distintos con esos null o el código PHP, aunque en este caso lo veo correcto recordemos que es como si guardaras datos en una lista, cadena o arreglo, pero los guardas en un orden y en ese mismo orden los vas colocando en otro lado.
  8. El código está correcto, necesito que me pases no el SQL en si, si no como está estructurada tu tabla en la BD, de la itemshop por favor.
  9. Te falta la parte del source, te listé los archivos.
  10. Para quitar el lobo debes modificar todo lo referente a WOLFMAN, CLAW, BLEEDING, SKILLWOLF, en el source del game. Directorio src: char_manager.cpp cmd_general.cpp input_main.cpp item.cpp skill.cpp battle.cpp motion.h char_item.cpp char_skill.cpp char_affect.cpp motion.cpp constants.cpp cmd_gm.cpp affect.h skill.h char.h ani.cpp char.cpp char.h config.cpp En Directorio db: ProtoReader.cpp En source de cliente Directorio UserInterface PythonSkill.cpp InstanceBase.h PythonItemModule.cpp PythonSkill.cpp PythonPlayer.cpp PythonNonPlayer.h Packet.h InstanceBase.cpp PythonCharacterModule.cpp Lo mismo, modificar en tu dump_proto. Me faltaron varios, pero ya me dió flojera listartelos, pero esos son los esenciales, mi consejo sería que mejor agarres un source sin lobito y le metas las modificaciones y fix necesarios, hay unos libres por ahí que ya estaban a medio trabajar, es cosa de que dejes la flojera.
  11. Si posteas el código PHP aquí de la zona de compras y el SQL de la base de datos, únicamente de la tabla que contiene la zona de las armaduras, armas, etc, puedo corregirtelo, generalmente es por no definir ya sea en la BD los socket necesarios para crear dicha armadura o en el código de inyección o en el PHP de tu página.
  12. Imagina que bajo cae la gente, pero es fue años atras. Ya habia dejado esto-
  13. Me dijeron que ya estaba posteada en algún lado, así que yo la posteo aquí. Esta versión no tiene errores, yo la usaba. QUEST: quest snow_dungeon begin state start begin function _TimersKilledLevel(v) if d.getf("level") == 1 and d.count_monster() <= 0 then --d.notice("Has derrotado a todos los monstruos en unos segundos irás a la siguiente planta. (1)") d.setf("level",2) snow_dungeon._DungeonClear() server_timer("SnowJp_2",5,d.get_map_index()) elseif d.getf("level") == 3 and d.count_monster() <= 0 then --d.notice("Has derrotado a todos los monstruos en unos segundos irás a la siguiente planta. (3)") d.setf("level",4) snow_dungeon._DungeonClear() server_timer("SnowJp_4",5,d.get_map_index()) elseif d.getf("level") == 4 and d.getf("mobwelle") == 1 and d.count_monster() <= 0 then d.notice("La defensa Szel fue muy devil...") d.setf("level",4) snow_dungeon._DungeonClear() server_timer("SnowJp_41",5,d.get_map_index()) elseif d.getf("level") == 4 and d.getf("mobwelle") == 2 and d.count_monster() <= 0 then --d.notice("Has derrotado a todos los monstruos en unos segundos irás a la siguiente planta. (41)") d.setf("level",5) snow_dungeon._DungeonClear() server_timer("SnowJp_5",5,d.get_map_index()) else if v == 1 then server_timer ("Killed_Level2", 8, get_server_timer_arg()) elseif v == 2 then server_timer ("Killed_Level", 8, get_server_timer_arg()) end end end function isFlame01Map() -- snow_dungeon.isFlame01Map() local set = snow_dungeon.get_settings() local idx = pc.get_map_index() if idx == set.outside_entry_pos[1] then return true else return false end end function is_nemeres_dungeon() local set = snow_dungeon.get_settings() local map = pc.get_map_index() if map >= (set.map_index * 10000) and map < (set.map_index * 10000 + 9000) then return true else return false end end function _CheckMembersLevel() local set = snow_dungeon.get_settings() if (is_test_server() and snow_dungeon.is_TestServerMode() == true ) then --dchat("Modo Test activo.") return true end local user_fail_level = {} local pids = {party.get_member_pids()} local need_level = set.need_level_group local have_ninja = false local have_shaman = false for i = 1, table.getn(pids), 1 do q.begin_other_pc_block(pids[i]) if pc.get_level() < need_level then table.insert(user_fail_level, table.getn(user_fail_level) +1, pc.get_name()) end local job = pc.get_job() if job == 1 -- Ninja weiblich or job == 5 --Ninja männlich then have_ninja = true end if job == 3 -- Schamane weiblich or job == 7 --Schamane männlich then have_shaman = true end q.end_other_pc_block() end if have_ninja == false then say("No puede iniciar la mazmorra si no tiene un") say("Ninja en su grupo.") return false end if have_shaman == false then say("No puede iniciar la mazmorra si no tiene un") say("Chamán en su grupo.") return false end if table.getn(user_fail_level) >= 1 then say_npc() say("") say("Algunos miembros del grupo no tienen el nivel") say("Nivel "..need_level.." no alcanzado:") for x = 1, table.getn(user_fail_level), 1 do say(color(1,1,0), " "..user_fail_level[x]) end return false end if table.getn(user_fail_level) == 0 then return true end end function is_TestServerMode() local set = snow_dungeon.get_settings() return set.Enable_TestServerMode end function _ClearAlls() local d_index = d.get_map_index() clear_server_timer("SnowJp_1",d_index) clear_server_timer("SnowJp_2",d_index) clear_server_timer("SnowJp_3",d_index) clear_server_timer("SnowJp_4",d_index) clear_server_timer("SnowJp_41",d_index) clear_server_timer("SnowJp_5",d_index) clear_server_timer("SnowJp_6",d_index) clear_server_timer("SnowJp_7",d_index) clear_server_timer("SnowJp_8",d_index) clear_server_timer("SnowJp_9",d_index) clear_server_timer("SnowJp_Boss",d_index) clear_server_timer("Killed_Level",d_index) clear_server_timer("Killed_Level2",d_index) clear_server_timer("SnowLeftTime_0",d_index) clear_server_timer("SnowLeftTime_1",d_index) clear_server_timer("SnowLeftTime_2",d_index) clear_server_timer("SnowLeftTime_3",d_index) clear_server_timer("SnowLeftTime_4",d_index) d.purge_unique("SnowDungeonStartNpc") d.setf("level",0) d.setf("party_leader_pid",0) d.clear_regen() end function get_settings() local snow_dungeon_settings = {} snow_dungeon_settings.map_index = 219 snow_dungeon_settings.base_cord = {5120, 1536 } snow_dungeon_settings.outside_entry_pos = {61,4322,1655} snow_dungeon_settings.need_level = 100 snow_dungeon_settings.need_level_group = 100 snow_dungeon_settings.GroupDuration = 60*60*4 snow_dungeon_settings.WarpMode = 1 -- 1 == Gruppe, 2 == Todo el mapa, 3 == Solo uno, == 4 solo uno snow_dungeon_settings.WarpPositions = { --d.warp_all {5291,1814}, --Level 1 {5540,1797}, {5882,1800}, {5293,2071}, {5540,2074}, --Level 5 {5866,2076}, {5423,2244}, {5689,2237}, {5969,2229},--Level 9 {6047,1924} --Jefe } snow_dungeon_settings.JumpPositionns = { --d.jump_all {173,278}, --Level 1 {422,261}, {764,264}, {175,535}, {422,538}, --Level 5 {748,540}, {305,708}, {571,701}, {851,693}, --Level 9 {927,395} --Jefe } --['LEVEL2_STONE_pos'] = {421,191}, --['LEVEL4_TARGET_pos'] = {171,496}, snow_dungeon_settings.LEVEL1_NPC_vnum = 20397 snow_dungeon_settings.LEVEL1_NPC_pos = {172,261} snow_dungeon_settings.LEVEL2_REALKEY_vnum = 30331 snow_dungeon_settings.LEVEL5_STONE_pos = { {449, 488}, {455, 445}, {419, 422}, {382, 444}, {389, 488} } snow_dungeon_settings.LEVEL5_STONE_vnum = 20398 snow_dungeon_settings.LEVEL5_REALKEY_vnum = 30332 snow_dungeon_settings.LEVEL6_TARGET_pos = {747,494} snow_dungeon_settings.LEVEL6_STONE_vnum = 8058 --Metin snow_dungeon_settings.LEVEL7_BOSSMOB_pos = { {302, 678}, {281, 657}, {303, 635}, {324, 656} } snow_dungeon_settings.LEVEL7_BOSSMOB_vnum = 6151 snow_dungeon_settings.LEVEL8_REALKEY_vnum = 30333 --['LEVEL8_STONE_pos'] = {570, 650} snow_dungeon_settings.LEVEL9_TARGET_pos = {849, 660} snow_dungeon_settings.LEVEL9_STONE_vnum = 20399 snow_dungeon_settings.boss_pos = {927,333} snow_dungeon_settings.BossVnumGroup = 6062 --GroupMobVnum of Boss --(Group.txt) snow_dungeon_settings.BossVnum = 6191 --MobVnum of 10.Ebene --Nemere(6191) snow_dungeon_settings.Enable_TestServerMode = false snow_dungeon_settings.WarpOutOnLoginMap = true return snow_dungeon_settings end when 20395.chat."Torre Nemere" with snow_dungeon.isFlame01Map() == true begin if npc.lock() == false then set_skin(NOWINDOW) return end local set = snow_dungeon.get_settings() say_npc() say("") say("¿Quieres entrar a Torre") say("Nemere con tu grupo?") say("Tenga cuidado,") say("el lugar es muy peligroso y") say("en un descuido usted podria salir") say("muerto.") say("") say("¿Estan seguro de entrar?") if select("Si, Queremos iniciar!","No, no estamos preparados...") == 2 then return end if (is_test_server() and snow_dungeon.is_TestServerMode() == true ) then say("Habilitar modo Servidor prueba") say("Suscríbete ahora.") timer("MakeSnowDungeonCreate",3) return end if not party.is_leader() then say_npc() say("Seria glorosio que usted solo pudiera") say("destruir la Torre Nemere.") say("Usted puede terminar muerto, así que le pido") say("forme un grupo y vuelva.") return end if pc.get_level() < set.need_level then say("Usted necesita por lo menos el nivel "..set.need_level.."") say("para poder entrar a Nemere.") return end if (pc.getf("snow_dungeon","duration") + set.GroupDuration) >= get_global_time() then say_npc() say("El tiempo de espera para poder entrar a ") say("torre Nemere aún no ha expirado. ") say("Comp. Tiempo: "..LIB_duration(pc.getf("snow_dungeon","duration") - get_global_time()).."") return end if snow_dungeon._CheckMembersLevel() == false then return else timer("MakeSnowDungeonCreate",2) end end when MakeSnowDungeonCreate.timer begin local set = snow_dungeon.get_settings() local t = get_global_time() local level = 1 if snow_dungeon.is_TestServerMode() == true then set.WarpMode = 2 end if set.WarpMode == 1 then --Gruppe d.new_jump_party(set.map_index, set.WarpPositions[level][1], set.WarpPositions[level][2] ) elseif set.WarpMode == 2 then d.new_jump_all(set.map_index, set.WarpPositions[level][1], set.WarpPositions[level][2] ) elseif set.WarpMode == 3 then d.new_jump(set.map_index, set.WarpPositions[level][1] * 100, set.WarpPositions[level][2] * 100) elseif set.WarpMode == 4 then d.new_jump(set.map_index, set.WarpPositions[level][1], set.WarpPositions[level][2]) else d.new_jump_all(set.map_index, set.WarpPositions[level][1], set.WarpPositions[level][2] ) end -- if snow_dungeon.is_nemeres_dungeon() == false then -- say("ERROR FATAL") -- say("No se ha creado la Dungeon: "..set.map_index.."") -- say("Reportar con Administrador") -- return -- end snow_dungeon._ClearAlls() d.setf("party_leader_pid",party.get_leader_pid()) party.setf("ice_dungeon_map_index",d.get_map_index()) d.set_unique("SnowDungeonStartNpc", d.spawn_mob_dir(set.LEVEL1_NPC_vnum, set.LEVEL1_NPC_pos[1] ,set.LEVEL1_NPC_pos[2] ,1) ) --Eisiger Löwe --d.spawn_mob_dir(set.LEVEL1_NPC_vnum, set.LEVEL1_NPC_pos[1] ,set.LEVEL1_NPC_pos[2] ,1) end -- FUNCs function _DungeonClear() d.clear_regen() d.purge_area(512000,153600,614000,228600) end function _CheckMembersLevel() local set = snow_dungeon.get_settings() if (is_test_server() and snow_dungeon.is_TestServerMode() == true ) then --dchat("Modo Test activo.") return true end local user_fail_level = {} local pids = {party.get_member_pids()} local need_level = set.need_level_group local have_ninja = false local have_shaman = false for i = 1, table.getn(pids), 1 do q.begin_other_pc_block(pids[i]) if pc.get_level() < need_level then table.insert(user_fail_level, table.getn(user_fail_level) +1, pc.get_name()) end local job = pc.get_job() if job == 1 -- Ninja weiblich or job == 5 --Ninja männlich then have_ninja = true end if job == 3 -- Schamane weiblich or job == 7 --Schamane männlich then have_shaman = true end q.end_other_pc_block() end if have_ninja == false then say("No puede iniciar la mazmorra si no tiene un") say("Ninja en su grupo.") return false end if have_shaman == false then say("No puede iniciar la mazmorra si no tiene un") say("Chamán en su grupo.") return false end if table.getn(user_fail_level) >= 1 then say_npc() say("") say("Algunos miembros del grupo no tienen el nivel") say("Nivel "..need_level.." no alcanzado:") for x = 1, table.getn(user_fail_level), 1 do say(color(1,1,0), " "..user_fail_level[x]) end return false end if table.getn(user_fail_level) == 0 then return true end end function _ClearAlls() local d_index = d.get_map_index() clear_server_timer("SnowJp_1",d_index) clear_server_timer("SnowJp_2",d_index) clear_server_timer("SnowJp_3",d_index) clear_server_timer("SnowJp_4",d_index) clear_server_timer("SnowJp_41",d_index) clear_server_timer("SnowJp_5",d_index) clear_server_timer("SnowJp_6",d_index) clear_server_timer("SnowJp_7",d_index) clear_server_timer("SnowJp_8",d_index) clear_server_timer("SnowJp_9",d_index) clear_server_timer("SnowJp_Boss",d_index) clear_server_timer("Killed_Level",d_index) clear_server_timer("Killed_Level2",d_index) clear_server_timer("SnowLeftTime_0",d_index) clear_server_timer("SnowLeftTime_1",d_index) clear_server_timer("SnowLeftTime_2",d_index) clear_server_timer("SnowLeftTime_3",d_index) clear_server_timer("SnowLeftTime_4",d_index) d.purge_unique("SnowDungeonStartNpc") d.setf("level",0) d.setf("party_leader_pid",0) d.clear_regen() end when 20397.chat."La lucha inicia" begin --Eisiger Löwe if npc.lock() == false then set_skin(NOWINDOW) return end say_npc() say("") say("¿Seguros quieren iniciar?") local wp = select("Avanzar","Talvez más tarde") if wp == 1 then local set = snow_dungeon.get_settings() snow_dungeon._DungeonClear() d.regen_file("data/dungeon/ice_dungeon/zone_1.txt") d.setf("level",1) d.notice("Una ola de frío helada sobre esta tierra.") d.notice("Mata a todos los monstruos para llegar a ") d.notice("la siguiente plant.") clear_server_timer("Killed_Level",d.get_map_index()) clear_server_timer("Killed_Level2",d.get_map_index()) server_timer ("Killed_Level", 10, d.get_map_index() ) npc.purge() d.set_warp_location(set.outside_entry_pos[1], set.outside_entry_pos[2] , set.outside_entry_pos[3]) d.setqf2("snow_dungeon","duration",get_global_time() ) --setzt bei allen Gruppenmitglieder den QuestFlag. server_timer("SnowLeftTime_0",60*15,d.get_map_index()) end setskin(NOWINDOW) end function _Create_LEVEL5_STONE() local set = snow_dungeon.get_settings() local c = set.LEVEL5_STONE_pos for i = 1, table.getn(c), 1 do local n = number(1,table.getn(c)) d.set_unique("stone5_"..i.."", d.spawn_mob(set.LEVEL5_STONE_vnum, c[n][1], c[n][2])) table.remove(c,n) end end -- TIMEs when Killed_Level.server_timer begin if d.select(get_server_timer_arg()) then snow_dungeon._TimersKilledLevel(1) end end when Killed_Level2.server_timer begin if d.select(get_server_timer_arg()) then snow_dungeon._TimersKilledLevel(2) end end -- Jumps when SnowJp_2.server_timer begin --Jump Level 2 if d.select(get_server_timer_arg()) then local set = snow_dungeon.get_settings() local level = 2 d.set_regen_file("data/dungeon/ice_dungeon/zone_2.txt") d.setf("level",level) d.jump_all( ( set.base_cord[1] + set.JumpPositionns[level][1] ), (set.base_cord[2]+set.JumpPositionns[level][2] )) --d.warp_all( set.WarpPositions[level][1], set.WarpPositions[level][2] ) d.notice("Encuentra el objeto "..item_name( set.LEVEL2_REALKEY_vnum ).." para liberar las fuerzas ocultas.") end end when SnowJp_3.server_timer begin --Jump Level 3 if d.select(get_server_timer_arg()) then local set = snow_dungeon.get_settings() local level = 3 d.regen_file("data/dungeon/ice_dungeon/zone_3.txt") d.setf("level",level) d.jump_all( ( set.base_cord[1] + set.JumpPositionns[level][1] ), (set.base_cord[2]+set.JumpPositionns[level][2] )) --d.warp_all( set.WarpPositions[level][1], set.WarpPositions[level][2] ) d.notice("Las criaturas de los fríos inviernos fueron despertados.") d.notice("Ve y destruye a todos!") clear_server_timer("Killed_Level",d.get_map_index()) clear_server_timer("Killed_Level2",d.get_map_index()) server_timer ("Killed_Level", 10, d.get_map_index() ) end end when SnowJp_4.server_timer begin --Jump Level 4 Welle 1 if d.select(get_server_timer_arg()) then local set = snow_dungeon.get_settings() local level = 4 d.regen_file("data/dungeon/ice_dungeon/zone_4.txt") d.setf("level",level) d.setf("mobwelle",1) d.jump_all( ( set.base_cord[1] + set.JumpPositionns[level][1] ), (set.base_cord[2]+set.JumpPositionns[level][2] )) --d.warp_all( set.WarpPositions[level][1], set.WarpPositions[level][2] ) d.notice("Ve a destruir la fuerza Szel.") clear_server_timer("Killed_Level",d.get_map_index()) clear_server_timer("Killed_Level2",d.get_map_index()) server_timer ("Killed_Level", 10, d.get_map_index() ) end end when SnowJp_41.server_timer begin --Jump Level 4 Welle 2 if d.select(get_server_timer_arg()) then local level = 4 d.regen_file("data/dungeon/ice_dungeon/zone_41.txt") d.setf("level",level) d.setf("mobwelle",2) d.notice("Usted ha logrado destruir la fuerza Szel muy rapido.") d.notice("Felicidades, obtiene un buff que le ayudará a destruir") d.notice("el dragón!") clear_server_timer("Killed_Level",d.get_map_index()) clear_server_timer("Killed_Level2",d.get_map_index()) server_timer ("Killed_Level", 10, d.get_map_index() ) end end when SnowJp_5.server_timer begin --Jump Level 5 if d.select(get_server_timer_arg()) then local set = snow_dungeon.get_settings() local level = 5 d.set_regen_file("data/dungeon/ice_dungeon/zone_5.txt") d.setf("level",level) d.jump_all( ( set.base_cord[1] + set.JumpPositionns[level][1] ), (set.base_cord[2]+set.JumpPositionns[level][2] ) ) --d.warp_all( set.WarpPositions[level][1], set.WarpPositions[level][2] ) d.notice("Busca "..mob_name(set.LEVEL5_STONE_vnum).." y utiliza las fuerzas de "..item_name(set.LEVEL5_REALKEY_vnum).." en el orden correcto.") snow_dungeon._Create_LEVEL5_STONE() -- Entferne die Servertimer und setze anderen Flag vorsichthalber um eventuele Bugs auszuschliessen. clear_server_timer("Killed_Level",d.get_map_index()) clear_server_timer("Killed_Level2",d.get_map_index()) d.setf("mobwelle",0) d.setf("stone",0) --For npcs end end when SnowJp_6.server_timer begin --Jump Level 6 if d.select(get_server_timer_arg()) then local set = snow_dungeon.get_settings() local level = 6 d.regen_file("data/dungeon/ice_dungeon/zone_6.txt") d.setf("level",level) d.jump_all( ( set.base_cord[1] + set.JumpPositionns[level][1] ), (set.base_cord[2]+set.JumpPositionns[level][2] )) --d.warp_all( set.WarpPositions[level][1], set.WarpPositions[level][2] ) d.notice("Se han escuchado explociones muy fuertes") d.notice("Un monstruo ha caído sobre la tierra!") d.notice("Destruye "..mob_name(set.LEVEL6_STONE_vnum).."") d.notice("¡Solo los chamanes pueden destruirlo!") d.spawn_mob_dir(set.LEVEL6_STONE_vnum ,set.LEVEL6_TARGET_pos[1] ,set.LEVEL6_TARGET_pos[2],1) end end when SnowJp_7.server_timer begin --Jump Level 7 if d.select(get_server_timer_arg()) then local set = snow_dungeon.get_settings() local level = 7 d.regen_file("data/dungeon/ice_dungeon/zone_7.txt") d.setf("level",level) d.jump_all( ( set.base_cord[1] + set.JumpPositionns[level][1] ), (set.base_cord[2]+set.JumpPositionns[level][2] )) --d.warp_all( set.WarpPositions[level][1], set.WarpPositions[level][2] ) d.notice("Usted debe destruir la piedra metin correcta "..mob_name(set.LEVEL7_BOSSMOB_vnum)..".") -- OLD! -- local c = set.LEVEL7_BOSSMOB_pos -- local n = number(1,table.getn(c)) -- d.setf("LEVEL7_Mob_Kill_Count",0) -- d.spawn_mob_dir(set.LEVEL7_BOSSMOB_vnum, c[n][1], c[n][2],1) -- NEW d.setf("LEVEL7_BOSSMOB_VID",0) local c = set.LEVEL7_BOSSMOB_pos local n = number(1,table.getn(c)) for i = 1, table.getn(c), 1 do local vid = d.spawn_mob_dir(set.LEVEL7_BOSSMOB_vnum, c[i][1], c[i][2],1) if i == n then d.setf("LEVEL7_BOSSMOB_VID",vid) end end end end when SnowJp_8.server_timer begin --Jump Level 8 if d.select(get_server_timer_arg()) then local set = snow_dungeon.get_settings() local level = 8 d.set_regen_file("data/dungeon/ice_dungeon/zone_8.txt") d.setf("level",level) d.jump_all( ( set.base_cord[1] + set.JumpPositionns[level][1] ), (set.base_cord[2]+set.JumpPositionns[level][2] )) --d.warp_all( set.WarpPositions[level][1], set.WarpPositions[level][2] ) d.notice("Ya superaste varias escalas en la torre Nemere") d.notice("Ahora tu objetivo es destruir todos los monstruos.") d.notice("Busca el item "..item_name(set.LEVEL8_REALKEY_vnum).." , cuando lo encuentres terminarás.") --d.notice("Aber nur Schamanen und Ninjas können ihn benutzen.") d.setf("fail_key_count",0) end end when SnowJp_9.server_timer begin --Jump Level 9 if d.select(get_server_timer_arg()) then local set = snow_dungeon.get_settings() local level = 9 d.regen_file("data/dungeon/ice_dungeon/zone_9.txt") d.setf("level",level) d.jump_all( ( set.base_cord[1] + set.JumpPositionns[level][1] ), (set.base_cord[2]+set.JumpPositionns[level][2] )) --d.warp_all( set.WarpPositions[level][1], set.WarpPositions[level][2] ) d.notice("Destruye "..mob_name(set.LEVEL9_STONE_vnum).." ") d.notice("¡Solo puede ser destruido por los Ninjas!") --d.notice("Aber nur Schamanen und Ninjas können ihn schanden zufügen.") d.notice("") d.spawn_mob_dir( set.LEVEL9_STONE_vnum , set.LEVEL9_TARGET_pos[1] , set.LEVEL9_TARGET_pos[2] ,1) end end when SnowJp_Boss.server_timer begin --Jump Level BossZone if d.select(get_server_timer_arg()) then d.notice("Se escucha una risa.") d.notice("Nemere: Ja Ja Ja") d.notice("Nemere: ¿Crees que me puedes ver?") d.notice("Nemere: ¿Crees que puedes derrotarme?") d.notice("Nemere: ¡No puedes escapar del destino!") d.regen_file("data/dungeon/ice_dungeon/zone_boss.txt") local set = snow_dungeon.get_settings() local level = 10 d.setf("level",level) d.jump_all( ( set.base_cord[1] + set.JumpPositionns[level][1] ), (set.base_cord[2]+set.JumpPositionns[level][2] )) --d.warp_all( set.WarpPositions[level][1], set.WarpPositions[level][2] ) d.spawn_group( set.BossVnumGroup , set.boss_pos[1], set.boss_pos[2], 5 ,1, 1) -- (Input from SRC: argument: vnum,x,y,radius,aggressive,count) end end --Timess when SnowLeftTime_0.server_timer begin if d.select(get_server_timer_arg()) then d.notice("Tiempo restante: 45 Minutos.") server_timer("SnowLeftTime_1",60*15,get_server_timer_arg()) end end when SnowLeftTime_1.server_timer begin if d.select(get_server_timer_arg()) then d.notice("Tiempo restante: 30 Minutos.") server_timer("SnowLeftTime_2",60*15,get_server_timer_arg()) end end when SnowLeftTime_2.server_timer begin if d.select(get_server_timer_arg()) then d.notice("Tiempo restante: 15 Minutos.") server_timer("SnowLeftTime_3",60*10,get_server_timer_arg()) end end when SnowLeftTime_3.server_timer begin if d.select(get_server_timer_arg()) then d.notice("Tiempo restante: 5 Minutos. Despues de, 5 minutos todos serán teletransportados.") server_timer("SnowLeftTime_4",60*4,get_server_timer_arg()) end end when SnowLeftTime_4.server_timer begin if d.select(get_server_timer_arg()) then d.notice("Tiempo restante: 1 Minutos. Despues de, 1 minuto todos serán teletransportados.") server_timer("server_timer", 60,get_server_timer_arg()) end end -- All exit when SnowJp_OutAll.server_timer begin --Jump Out Bye bye ;D if d.select(get_server_timer_arg()) then local set = snow_dungeon.get_settings() d.set_warp_location(set.outside_entry_pos[1], set.outside_entry_pos[2] , set.outside_entry_pos[3]) snow_dungeon._ClearAlls() d.exit_all() end end --Others when 30331.use with snow_dungeon.is_nemeres_dungeon() == true begin --LEVEL2_REALKEY_vnum local set = snow_dungeon.get_settings() local job = pc.get_job() local level = d.getf("level") if level == 2 then if (is_test_server() and snow_dungeon.is_TestServerMode() == true ) then --dchat("SET VARIABLE JOB 3") job = 3 end if job == 3 -- Schamane weiblich or job == 7 --Schamane männlich then if number(1,3) == 1 then --or d.count_monster() < 10 then d.notice("La tecla de la derecha se encontró en unos segundos irán a la siguiente planta.") d.setf("level",3) snow_dungeon._DungeonClear() server_timer("SnowJp_3",5,d.get_map_index()) item.remove() else d.notice("Esa fue una clave equivocada.") item.remove() end else d.notice("Sólo los chamanes pueden utilizarlo.") return end end end when kill with not npc.is_pc() and snow_dungeon.is_nemeres_dungeon() == true begin local set = snow_dungeon.get_settings() local level = d.getf("level") local mobvnum = npc.get_race() local mobvid = npc.get_vid() --d.notice("KILL SNOW DUNGEON: mobvnum:"..mobvnum.." level:"..level.." vid:"..npc.get_vid().."") -- level 1 kill only if level == 2 and mobvnum >= 6101 and mobvnum <= 6108 and 1 == number(1,100) then game.drop_item( set.LEVEL2_REALKEY_vnum ,1) -- level 3 kill only -- level 4 kill only elseif level == 5 and mobvnum >= 6101 and mobvnum <= 6108 and 1 == number(1,100) then local KILL_COUNT_FOR_DROP_KEY = 50 local n =d.getf("count") + 1 d.setf("count", n) if n == KILL_COUNT_FOR_DROP_KEY then game.drop_item( set.LEVEL5_REALKEY_vnum ,1) d.setf("count", 0) end elseif level == 6 and mobvnum == set.LEVEL6_STONE_vnum then d.notice("Der "..mob_name(set.LEVEL6_STONE_vnum).." wurde zerstört, in wenigen Sekunden geht es in den nächsten Stock.") d.setf("level",7) snow_dungeon._DungeonClear() server_timer("SnowJp_7",5,d.get_map_index()) elseif level == 7 and mobvnum == set.LEVEL7_BOSSMOB_vnum and d.getf("LEVEL7_BOSSMOB_VID") == mobvid then -- OLD -- local new = d.getf("LEVEL7_Mob_Kill_Count") +1 -- d.setf("LEVEL7_Mob_Kill_Count",new) -- if number(1,5) == 1 or new > 5 then -- snow_dungeon._DungeonClear() -- server_timer("SnowJp_8",5,d.get_map_index()) -- d.notice("Der Richtige "..mob_name(set.LEVEL7_BOSSMOB_vnum).." wurde vernichtet.") -- else -- local c = set.LEVEL7_BOSSMOB_pos -- local n = number(1,table.getn(c)) -- d.spawn_mob(set.LEVEL7_BOSSMOB_vnum, c[n][1], c[n][2]) -- d.notice("Der falsche "..mob_name(set.LEVEL7_BOSSMOB_vnum).." wurde vernichtet.") -- end -- NEW snow_dungeon._DungeonClear() server_timer("SnowJp_8",5,d.get_map_index()) d.notice("El mob correcto "..mob_name(set.LEVEL7_BOSSMOB_vnum).." ha sido destruido.") elseif level == 8 and mobvnum >= 6101 and mobvnum <= 6108 and 1 == number(1,100) then game.drop_item(set.LEVEL8_REALKEY_vnum,1) elseif level == 9 and mobvnum == set.LEVEL9_STONE_vnum then d.notice("El "..mob_name(set.LEVEL9_STONE_vnum).." fue destruido en pocos segundos se pasa al siguiente piso.") snow_dungeon._DungeonClear() d.setf("level",10) server_timer("SnowJp_Boss",5,d.get_map_index()) elseif level == 10 and mobvnum == set.BossVnum then local OutTimeWarp = 60 snow_dungeon._DungeonClear() d.notice("Usted tiene "..mob_name(set.BossVnum).." derrotados en "..OutTimeWarp.." Segundos.") snow_dungeon.give_names_notice() server_timer("SnowJp_OutAll",OutTimeWarp,d.get_map_index()) end end when 20398.take begin --LEVEL5_STONE_vnum if snow_dungeon.is_nemeres_dungeon() == true then local set = snow_dungeon.get_settings() local vnum = item.get_vnum() local npc_vid = npc.get_vid() local old_stone = d.getf("stone") -- for i = 1, 6, 1 do -- dchat("Búsqueda: "..i.." : "..d.get_unique_vid("stone5_"..i.."").."") -- end if set.LEVEL5_REALKEY_vnum == vnum then --30332 if npc_vid == d.get_unique_vid("stone5_1") then -- Stone 1 --dchat("Stone 1") d.setf("stone",1) chat("Esa fue una buena elección. Destruye la siguiente.") elseif npc_vid == d.get_unique_vid("stone5_2") then -- Stone 2 --dchat("Stone 2") if old_stone != 1 then chat("Orden incorrecto. La clave fue destruida.") else d.setf("stone",2) chat("Esa fue una buena elección. Destruye la siguiente.") end elseif npc_vid == d.get_unique_vid("stone5_3") then -- Stone 3 --dchat("Stone 3") if old_stone != 2 then chat("Orden incorrecto. La clave fue destruida en el proceso.") else d.setf("stone",3) chat("Esa fue una buena elección. Destruye la siguiente.") end elseif npc_vid == d.get_unique_vid("stone5_4") then -- Stone 4 --dchat("Stone 4") if old_stone != 3 then chat("Orden incorrecto. La clave fue destruida.") else d.setf("stone",4) chat("Esa fue una buena elección. Destruye la siguiente.") end elseif npc_vid == d.get_unique_vid("stone5_5") then -- Stone 5 --dchat("Stone 5") if old_stone != 4 then chat("Orden incorrecto. La clave fue destruida en el proceso.") else d.setf("level",6) d.setf("stone",5) d.notice("Has destruido todos los bloques en unos segundos va en el siguiente piso.") snow_dungeon._DungeonClear() server_timer("SnowJp_6",5,d.get_map_index()) end else chat("Orden incorrecto. La clave fue destruid en el proceso.") end --dchat("old_stone:"..old_stone.." "..d.getf("stone").."") if old_stone != d.getf("stone") then --dchat("npc remove") npc.purge() end item.remove() end end end when 30333.use with snow_dungeon.is_nemeres_dungeon() == true begin --LEVEL8_REALKEY_vnum local set = snow_dungeon.get_settings() local level = d.getf("level") local job = pc.get_job() if level == 8 then if (is_test_server() and snow_dungeon.is_TestServerMode() == true ) then --dchat("SET VARIABLE JOB 3") job = 3 end if job == 1 -- Ninja weiblich or job == 5 --Ninja männlich or job == 3 -- Schamane weiblich or job == 7 --Schamane männlich then local new = d.getf("fail_key_count") +1 if number(1,10) == 1 or new > 5 then d.notice("La tecla de la derecha se encontró en unos segundos va a la siguiente planta.") d.setf("level",9) snow_dungeon._DungeonClear() server_timer("SnowJp_9",5,d.get_map_index()) item.remove() else d.notice("Esa fue la clave equivocada.") d.setf("fail_key_count",new) item.remove() end else d.notice("Sólo los chamanes y Ninja pueden utilizar.") return end end end -- Login, Logout when logout begin if snow_dungeon.is_nemeres_dungeon() == true then local set = snow_dungeon.get_settings() pc.setqf("exit_time", get_global_time() ) snow_dungeon.unregister_name() end end when login begin local set = snow_dungeon.get_settings() -- if pc.is_gm() then -- return -- end if set.map_index == pc.get_map_index() and set.WarpOutOnLoginMap == true then --Selbe Map! pc.warp(set.outside_entry_pos[2] * 100,set.outside_entry_pos[3] * 100) return end if snow_dungeon.is_nemeres_dungeon() == true then d.set_warp_location(set.outside_entry_pos[1], set.outside_entry_pos[2] , set.outside_entry_pos[3]) -- local v = find_npc_by_vnum(set.LEVEL1_NPC_vnum) -- if v == 0 then -- d.spawn_mob_dir(set.LEVEL1_NPC_vnum, set.LEVEL1_NPC_pos[1] ,set.LEVEL1_NPC_pos[2] ,1) --Eisiger Löwe -- end snow_dungeon.register_name() end end --My Name Func function give_names_notice() --remove end function register_name() --remove end function unregister_name() --remove end ---TESTS --[[ when 9010.chat."Dungeon de Hielo: _DungeonClear" with is_test_server() begin snow_dungeon._DungeonClear() say("done") end when 9010.chat."Dungeon de Hielo: Limpiar todo" with is_test_server() begin say("done") snow_dungeon._ClearAlls() end when 9010.chat."Dungeon de Hielo: Regen en X" with is_test_server() begin snow_dungeon._DungeonClear() local n = input() d.regen_file("data/dungeon/ice_dungeon/zone_"..n..".txt") say("done") end when 9010.chat."Dungeon de Hielo: Subir a X" with is_test_server() begin local set = snow_dungeon.get_settings() local level = input() say("level:"..level.." "..set.WarpPositions[level][1].." "..set.WarpPositions[level][2].."") wait() d.warp_all( set.WarpPositions[level][1], set.WarpPositions[level][2] ) end when 9010.chat."Dungeon de Hielo: SnowJp_Boss " begin d.setf("level",10) snow_dungeon._DungeonClear() server_timer("SnowJp_Boss",5,d.get_map_index()) say("done") end when 9010.chat."Dungeon de Hielo: Salir de todo " begin say("done") server_timer("SnowJp_OutAll",5,d.get_map_index()) end ]] end end Quest_lib function LIB_duration(seconds) local days = 0 local hours = math.floor(seconds / 3600) local mins = math.floor((seconds - (hours*3600)) / 60) local secs = math.floor(seconds - hours*3600 - mins*60 ) local t = "" if tonumber(hours) >= 24 then days = math.floor(hours / 24) hours = math.floor(hours - (days*24)) end if tonumber(days) == 1 then t = t..days.." Dias " elseif tonumber(days) >= 1 then t = t..days.." Dias " end if tonumber(hours) == 1 then t = t..hours.." Horas " elseif tonumber(hours) >= 1 then t = t..hours.." Horas " end if tonumber(mins) == 1 then t = t..mins.." Minutos " elseif tonumber(mins) >= 1 then t = t..mins.." Minutos " end if tonumber(secs) == 1 then t = t..secs.." Segundos " elseif tonumber(secs) >= 1 then t = t..secs.." Segundos " end if t == "" then return "(Por el momento no puedes!)" end return t end -- 6151 Szel_4thfloor_affectlimit = {AFF_HOSIN} Szel_7thfloor_affectlimit = {AFF_GICHEON} -- 8058 IceMetin_racelimit = {WARRIOR_M,WARRIOR_W,NINJA_W,NINJA_M,SURA_M,SURA_W} -- 20399 IceStonePillar_racelimit = {WARRIOR_M,WARRIOR_W,SURA_M,SURA_W} -- C3 NEMERE END
  14. 95 = Defensa garra. XD
  15. quest mapas_caos begin state start begin when 9012.chat."Mapas del caos" begin say_title("Anciano:") say("Hola, soy el anciano") say("Veo que quieres teletransportarte a los mapas del caos") say("para poder acceder necesitarás ser nivel 90") say("") local main_set = select ("Mapa Cape","Thunder", "Dawnmistwood","Bay","No deseo ir ahí") if main_set == 1 then if pc.level >= 90 then pc.warp ( 106400 , 166400 ) else say("No eres suficiente nivel, lo siento.") end elseif main_set == 2 then if pc.level >= 95 then pc.warp ( 106400 , 166400 ) else say("No eres suficiente nivel, lo siento.") end elseif main_set == 3 then if pc.level >= 100 then pc.warp ( 106400 , 166400 ) else say("No eres suficiente nivel, lo siento.") end elseif main_set == 4 then if pc.level == 105 then pc.warp ( 106400 , 166400 ) else say("No eres suficiente nivel, lo siento.") end elseif main_set == 5 then return end end end end
×
×
  • Create New...