Guia Agregando/Reparando los NPC's con C++

Tema en 'MapleStory' iniciado por DarkClaudia, 31 May 2008.

  1. Dar

    DarkClaudia
    Expand Collapse
    Teniente Coronel

    Mensajes:
    1.046
    Me Gusta recibidos:
    0
    Primero que nada, esto requiere por lo menos un conocimiento básico en c++, mas que todo en las sentencias IF (muy comunes en PHP también, para los que saben PHP).

    Una introducción básica a la sentencia IF:

    Código PHP:
    if (condicion) {
    // Aquí el codigo que se ejecutará si es verdadero
    }
    else{
    //Aquí el codigo que se ejecutara si es falso
    }

    Ya teniendo esto claro, podemos darnos una idea de como hacer que los NPC funcionen. Quiero aclarar que los NPC no es que esten dañados por defecto, tampoco es que tienen un codigo errado, el problema es que no existe tal código en los files de dichos NPC.
    ---------------------------------------------------------------------

    Al tema:

    En mi caso, tomé el NPC llamado "Shuri" ubicado en Orbis.
    [​IMG]

    Una vez que tienes sus nombres, debes buscar su ID en la página de busqueda de NPC's de Sauna.

    Una vez que tengas su id, procederemos a agregar estás 2 lineas dentro del archivo NPCsScripts.h:


    Citar:
    static void npc_2010005(NPC* npc);
    Fijate que lo que está en rojo es el ID del NPC.

    NO debes agregar ese código en el lugar que te de la gana dentro del archivo ya mencionado, tienes que agregar esa línea en esta parte, fijate en la imagen donde lo agregué.

    [​IMG]

    Ahora, debemos agregar otra linea (En el mismo archivo)


    Citar:
    case 2010005: npc_2010005(npc); break;
    Igualmente que la anterior, esta tambien tiene que ser en un lugar especifico.. Ver la imagen:
    [​IMG]
    Fijate que lo agregué antes de la línea npc->end.
    ------

    Ya agregado esto, ahora si procederemos a "programar" al NPC, es decir, lo que quieres que el haga cuando le hagas click. [​IMG]

    El código base que yo usé, es el siguiente:


    Código PHP:
    void NPCsScripts::npc_2010005(NPC* npc){ // Código base con el ID del NPC
    int state = npc->getState();
    if(
    state == 0){ //sentencia
    npc->addText("Funciona :D"); // La función "addText", es lo que dirá el NPC en la ventanita.
    npc->sendNext(); // Función "sendNext" quiere decir que enviará un botón "NEXT" al usuario.
    }
    else if(
    state == 1){ // si el usuario presiona el NEXT anterior ->
    npc->addText("Recibirás 'The Mark of Beta'"); //procede a decir esto
    npc->sendBackOK(); // Función "sendBackOK" - envia un boton de "OK" al usuario.
    }
    else if(
    state == 2){ // si el usuario presiona el "OK" anterior ->
    npc->getItem(01092035 1); // Le regala 1 item con id "01092035" (The mark of beta) con la función "getItem"
    npc->end(); // termina
    }
    }

    Ese código, yo lo agregué a MapleIsland.cpp y funcionó. Aunque se llame "MapleIsland" me funcionó de igual manera. [​IMG]

    Leer los comentarios de color naranja para entender lo que se hace.


    Demostración:

    [​IMG]

    [​IMG]

    [​IMG]

    [​IMG]

    Es todo, aquí les dejo una lista de funciones (como la de "getItem") recopilados por el usuario cPlusPlus de RZ.

    NOTA: La mayoria de estas funciones no se como hacerlas funcionar, tendria que ponerme a revisar cada una, solo las agrego para quienes sepan de c++ y/o simplemente lo quieran tener para probarlos.


    Code:
    npc->addChar(char cha);npc->addQuest(int QuestID);npc->addText(char string);npc->cend();npc->end();npc->endQuest();npc->getItemNum(int itemid);npc->getMesos();npc->getNpcID();npc->getnum();npc->getNumber();npc->getPlayer();npc->getPlayerEyes();npc->getPlayerHP();npc->getPlayerMap();npc->getSelected();npc->getState();npc->getState();npc->getText();npc->gettext();npc->getVariable(char *name);npc->giveEXP(int exp);npc->giveItem(int itemid,short amount);npc->giveMesos(int amount);npc->isEnd();//boolnpc->isQuest();//boolnpc->isquest();npc->isStart();//boolnpc->isstart();npc->npcid();npc->npcPacket(char type);npc->player();//More to come....npc->selected();npc->sendAcceptDecline();npc->sendBackNext();npc->sendOK();npc->sendBackOK();npc->sendGetNumber(int def,int min,int max);npc->sendGetText();npc->sendOK();npc->sendNext();npc->sendSimple();npc->sendStyle();npc->sendYesNo();npc->setGetNumber(int num);npc->setGetText(char *text);npc->setIsStart(bool what);npc->setPlayerHP(short hp);npc->setSelected(int selected);npc->setState(int state);npc->setStyle(int id);npc->setVariable(char *name,int val);npc->showShop();npc->state();npc->teleport(int mapid);npc->text();npc->vars();npc->~NPC();
    -----------------------------------------------------------------
     
  2. win

    wingfu
    Expand Collapse
    Soldado Raso

    Mensajes:
    65
    Me Gusta recibidos:
    0
    wow kisera estar en tu server xD
     
  3. Ano

    AnonimoxD
    Expand Collapse
    Recluta

    Mensajes:
    1
    Me Gusta recibidos:
    0
    Muy bueno.. hehe pido sorry porque orita iva a postear qe no podia instalar el c++ pero de repente paso del archivo 2 al 6 sin darme cuenta bueno

    Si yego a tener problemas editare este mensaje para evitar el Spam!

    Saludos.. oies tu tienes un server?
     
  4. lor

    lorena179
    Expand Collapse
    Recluta

    Mensajes:
    1
    Me Gusta recibidos:
    0
    Hola me gustaria estar en tu server pero no se como si no es mucha molestia ayudame por favor y bueno hasta pronto y gracias .
     
  5. cla

    claudiogb
    Expand Collapse
    Recluta

    Mensajes:
    2
    Me Gusta recibidos:
    0
    Oigan me pueden explicar como hacer para crear un NPC de los Jobs por favor!!
     
  6. iMi

    iMikele
    Expand Collapse
    Recluta

    Mensajes:
    44
    Me Gusta recibidos:
    0
    claudiogb husa el buscador, o en google =3 io tnia el link de todo lo rerferente a un server ^-^ si lo encuentro t lo mando en un PM =3
     

Compartir esta página