DP script

Indította Redbull, 2013 március 04, 11:33:49 DÉLUTÁN

Előző téma - Következő téma

EroniX

Azuregos Delta Force

Redbull

UiActionra írtam úgy is jó volt.

..\..\..\joemu\src\scripts\Custom\npc_dp.cpp(19): warning C4101: 'ID' : unreferenced local variable

EroniX

Azuregos Delta Force

Redbull

4>scripts.lib(npc_dp.obj) : error LNK2019: unresolved external symbol "class Database LogonDatabase" (?LogonDatabase@@3VDatabase@@A) referenced in function "bool __cdecl GossipSelect_npc_dp(class Player *,class Creature *,unsigned int,unsigned int)" (?GossipSelect_npc_dp@@YA_NPAVPlayer@@PAVCreature@@II@Z)
4>C:\Build\bin\Release\oregon-core.exe : fatal error LNK1120: 1 unresolved externals

Redbull

#19
Meg van, közbe megoldódott
Login helyett Logon volt :D
Köszönöm a segítséged!
Now good :)

Redbull

#20
Viszont hiába adok neki értéket (kreditet) mindig azt írja nincsen.

IrOn

másold be egész kódot

Redbull

    #include "ScriptPCH.h"
    #include <cstring>
     
    extern DatabaseType LoginDatabase;
     
bool GossipHello_npc_dp(Player* pPlayer, Creature* pCreature)
    {
            pPlayer->ADD_GOSSIP_ITEM(0, "Mennyi a pontom?", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
            pPlayer->SEND_GOSSIP_MENU(1, pCreature->GetGUID());
            return true;
    }
     
    bool GossipSelect_npc_dp(Player* pPlayer, Creature* pCreature, uint32 /*uiSender*/, uint32 action)
    {
            if(!pPlayer || !pCreature || !action)
                return false;
     
            Field *fields;
            QueryResult_AutoPtr result;
     
            switch(action)
            {
                            case GOSSIP_ACTION_INFO_DEF+1:
                                    result = LoginDatabase.PQuery("SELECT `dp` FROM `kredit` WHERE `username` = '%u' LIMIT 1", pPlayer->GetSession()->GetAccountId());
                                    if (result)
                    {
                        fields = result->Fetch();
                        uint32 dp = fields[0].GetUInt32();
                        pCreature->MonsterWhisper("Jelenleg %u dp-d van!", dp, pPlayer->GetGUID());
                    }
                    else
                        pCreature->MonsterWhisper("Nincs dp-d!", pPlayer->GetGUID());
     
                    pPlayer->CLOSE_GOSSIP_MENU();
                    break;
            }
     
            return true;
    }
     
    void AddSC_npc_dp()
    {
    Script *newscript;
    newscript = new Script;
    newscript->Name = "npc_dp";
    newscript->pGossipHello = &GossipHello_npc_dp;
    newscript->pGossipSelect = &GossipSelect_npc_dp;
    newscript->RegisterSelf();
    }

EroniX

#23

result = LoginDatabase.PQuery("SELECT `dp` FROM `kredit` WHERE `username` = '%u' LIMIT 1", pPlayer->GetSession()->GetAccountId());

Felhasználónévnek biztosan az account id-t akartad megadni?

Ezenkívül ezt a sort:

pPlayer->ADD_GOSSIP_ITEM(0, "Mennyi a pontom?", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);

Átírnám erre:

pPlayer->ADD_GOSSIP_ITEM(0, "Mennyi a pontom?", GOSSIP_SENDER_MAIN, 0);

(nem tudom hol van definiálva a GOSSIP_ACTION_INFO_DEF)
Ezt:

case GOSSIP_ACTION_INFO_DEF+1:

Erre:

case 0:

Végül ezt:

if(!pPlayer || !pCreature || !action)

Erre:

if(!pPlayer || !pCreature)
Azuregos Delta Force

Redbull

Nem, nem account id alapján szerettem volna. De ezt még írtam az elején, de az a lényeg megoldódik :)

Powered by EzPortal