Jump to content

Dilong

Miembro
  • Contador contenido

    1.207
  • Ingreso

  • Última visita

  • Días ganados

    136

Todo lo publicado por Dilong

  1. De la misma forma que se implementaron, utilizando como referencia los post de esos sistemas, si no, lo veo difícil y si han cambiado detalles igual xd
  2. Si, el problema es que, el que posteo esto estuvo un tiempo haciendo copy paste de todo lo que veía en otro lado y lo traducia todo con el traductor google sin utilizar la lógica y sin probarlo que es lo peor, por que en el tema de source si no hay una guía decente al español o propio no te imaginas la confusión si un nuevo ve algo como esto
  3. Cliente oficial >> desempaquetar icono.epk O sino bajarse esos iconos de la wiki del oficial y redimencionarlo a 32 pixeles (creo que era menos), puedes guiarte con los iconos que ya tienes y listo
  4. Básicamente se resume en instalar los .tar(serverfiles+mysql+libs si hace falta) en el vps o dedicado Pero si o si la máquina que usaras debe tener sistema operativo freebsd y tambien debes preparar el SO para su uso (esa guia tambien existe y esta en el foro) Guias para todo lo basico existen, solo falta saber buscar
  5. Es mas rápido que te bajes el cliente y saques lo que quieres
  6. Seria mejor que pongas tus dudas en el post, para que sea mas rápido
  7. Todos los que figuran en los config de los canales, db y auth
  8. En su tiempo, en estos files lo único interesante era el sistema de mascotas y la dungeon nemere, arrador Pero ahora no tiene nada que no tenga cualquier 40k posteado actualmente, insistir en utilizarlo solo es perder el tiempo a lo tonto
  9. Si no tienes 150+ on, no ganaras algo "libre", si no es asi como mucho solo para pagar el vps Tal vez los novatos con algo de exp trabajen hasta gratis, pero si quieres un dev ya es otra cosa
  10. Supongo que seria nowar o algo así, pero usando files viejos ese no es el único problema
  11. El problema es que con eso termino abriendo un sv online con jugadores
  12. Si es solo la bandera, eso es por que no tienes o la tabla land de player esta vacía, se soluciona sacando esa tabla de otro MySQL o metiendo una query de eso
  13. Esa sección ya no existe, los post que antes fueron enviados ahí era por que no tenían respuesta o solucion después de un tiempo Ahora directamente los post sin solución se mantienen en Ayudas y preguntas Y con spam me refiero en "revivir" un post antes de 24hs
  14. Basicamente la idea es poner la id de la cuenta gm en la tabla para bloquearlo, con id me refiero a este numero marcado en azul, por si algunos se confunden y ponen los datos de login: Con esto si la id de su cuenta esta en la tabla, dira que no tiene permiso para comerciar, es algo simple y el codigo puede ser mejorado exchange.cpp >> debajo de if (victim->IsBlockMode(BLOCK_EXCHANGE)), debe quedar de esta manera: if (victim->IsBlockMode(BLOCK_EXCHANGE)) { ChatPacket(CHAT_TYPE_INFO, LC_TEXT("»ó´ë¹æÀÌ ±³È¯ °ÅºÎ »óÅÂÀÔ´Ï´Ù.")); return false; } if (!IsGM()) { if (victim->GetGMLevel() != GM_PLAYER) { ChatPacket(CHAT_TYPE_INFO, LC_TEXT("No puedes darle comercio a un GM")); return false; } } if (IsGM()) { char szQuery[QUERY_MAX_LEN]; snprintf(szQuery, sizeof(szQuery), "SELECT * FROM comerciogm"); SQLMsg * pMsg = DBManager::instance().DirectQuery(szQuery); SQLResult * pRes = pMsg->Get(); if (pRes->uiNumRows) { MYSQL_ROW row; while ((row = mysql_fetch_row(pRes->pSQLResult))) { DWORD datos = 0; str_to_number(datos, row[0]); if (GetPlayerID()==datos) { ChatPacket(CHAT_TYPE_INFO, "No tienes permiso para comerciar"); return false; } } } } Sql >> Player: SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0; -- ---------------------------- -- Table structure for comerciogm -- ---------------------------- DROP TABLE IF EXISTS `comerciogm`; CREATE TABLE `comerciogm` ( `gm` varchar(255) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL DEFAULT '', PRIMARY KEY (`gm`) USING BTREE ) ENGINE = MyISAM CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Dynamic; SET FOREIGN_KEY_CHECKS = 1;
  15. Listo, prueba Hay unos detalles que estan mal en tu quest Ej: Este server timer no te funcionara por que no has puesto el tiempo: server_timer("Mineria_Evento",60*30) << en este caso terminara en 30 minutos Y un when al timer cuando se cumpla el tiempo, solo asi desactivara el evento: when Mineria_Evento. server_timer begin game.set_event_flag("Mineria_activado",0) warp_all_to_village(indexmapa, 30) notice_all("Evento terminado") end Aqui: warp_all_to_village(indexmapa, 30) -- para que saque a todos del mapa clear_server_timer("Mineria_Evento") -- debes eliminar si o si el timer, o sino dependiendo de lo que hagas con el npc del evento puede tirar el servidor El resto con practica y mirando codigo hecho etc lo iras entendiendo
  16. No lo he probado quest mineria begin state start begin when 20091.chat."gm event" with pc.is_gm() begin coord_map_x = numero coord_map_y = numero index_map = index say_title("Npc") say("Npc") local event = select("Activar","Cancelar","Cerrar") if event == 1 then game.set_event_flag("event1",1) notice_all("evento activo") elseif event == 2 then game.set_event_flag("event1",0) notice_all("evento terminado") return end end when 20091.chat."mapa mineria" with game.get_event_flag("event1")==1 begin local map = select("Entrar","Cancelar") if map == 1 then pc.warp(coord_map_x,coord_map_y) return end end when login with pc.get_map_index()==index_map and get_event_flag("event1")==1 begin loop_timer("eliminarobjeto",5) loop_timer("warp",10) end when warp.timer begin if game.get_event_flag("event1")==0 then cleartimer("warp") warp_to_village() end end when eliminarobjeto.timer begin if game.get_event_flag("event1")==0 then local lista_mineral = {id1,id2,id3} -- elimina los minerales cuando acaba el evento, se debe poner las ids aqui for i=1,table.getn(lista_mineral) do pc.remove_item(lista_mineral[i],999) cleartimer("eliminarobjeto") end end end when 20091.chat."Obtener objetos" with game.get_event_flag("event1")==1 and pc.get_map_index()==index_map begin local objetos = { {"objeto1", idmineral, cantidad,premio,cantidad}, {"objeto2", idmineral, cantidad,premio,cantidad}, {"objeto3", idmineral, cantidad,premio,cantidad}, {"Cerrar"} } local objetos2 = {} for i = 1, table.getn(objetos) do table.insert(objetos2, objetos[i][1]) end local sel = select_table(objetos2) if pc.count_item(objetos[sel][2]) < objetos[sel][3] then say_reward("No tienes la cantidad necesaria") return end pc.remove_item(objetos[sel][2],objetos[sel][3]) pc.give_item2(objetos[sel][4],objetos[sel][5]) end end end
  17. Puede ser mediante set_state(segunda_quest) -- inicio del state en la primera quest state segunda_quest begin -- inicio del state en la segunda quest when texto.begin --- segunda quest O sino que la primera quest lance un setqf() y que la segunda lo chequee con getqf()
  18. Es normal que no salga http://prntscr.com/myuo28
  19. Dilong

    [Duda]

    Y si quieres ponle el addimage o algo asi se llama la funcion, para poner la imagen del mob <.<
  20. Dilong

    [Duda]

    Otra forma seria que cuando el pj llegue a x lugar aparezca el cartel diciendole si desea continuar o no, si le da a continuar para que la quest haga un spawn del jefe agresivo y si le da a no, ps lo envia a la city, llega a ser lo mismo
  21. Dilong

    [Duda]

    En quest seria algo asi, no lo he probado en c++ se podria agregar la opcion de que el mob no ataque ni se mueva (Es suficiente con que no ataque) en el mapa hasta que se cumpla algunas condiciones quest test begin state start begin when login with pc.get_map_index()==idx begin pc.forget_my_attacker() local coord_and_coord = { [1] = {coordx, coordy,}, --- posibles coordenadas donde el pj pasara [2] = {coordx, coordy,}, [3] = {coordx, coordy,}, [4] = {coordx, coordy,}, [5] = {coordx, coordy,}, } target.pos("__TARGET__", coord_and_coord[1], coord_and_coord[2], idx,) target.delete("__TARGET__") say_title("Sv:") say("texto") local info = select("Continuar","No") if info == 1 then pc.aggregate_monster() elseif info == 2 then say_reward("info") wait() warp_to_village() end end end end end
×
×
  • Crear nuevo...