Ele é bem grande, mas ta mutio bom.
Tava procurando esse code, msm vc copiando do otfans qm me ajudo foi vc
Vlw, :hi:
Por soulblaster, 10 de jan. de 2007 em Linguagens de Programação
info
Grupo: Visconde
Registrado: 20/08/06
Posts: 250
Reputação: +146

Ele é bem grande, mas ta mutio bom.
Tava procurando esse code, msm vc copiando do otfans qm me ajudo foi vc
Vlw, :hi:
info
Grupo: Cavaleiro
Registrado: 22/10/05
Posts: 196
Reputação: 0

Hiho!
opa, é sempre bom ajudar as pessoas =]
vlw pelo comment ;]
cya... :hi:
Ótimo Codigo
.
Mas eu não sei qual é a diferença entre XML e SQL. =/
Opa.. nice =)
Depois vou adicionar aqui e testar.. ai eu edito ![]()
Ah.. Soulblaster,
adiciona ali no seu post lá emcima:
Pra quem o ot for XML ao invés de SQL, deleta o:
player->bank = result.getDataLong("bank");
e deleta o:
query << "`bank` = " << player->bank << ", ";
E em ioplayerxml.cpp:
Depois de:
if(readXMLInteger(root, "soul", intValue)){
player->soul = intValue;
}
Adicione:
if(readXMLInteger(root, "bank", intValue)){
player->bank = intValue;
}
else
player->bank = 0;
--------------
E depois de:
sb.str("");
sb << player->soul;
xmlSetProp(root, (const xmlChar*)"soul", (const xmlChar*)sb.str().c_str());
Adicione:
sb.str("");
sb << player->bank;
xmlSetProp(root, (const xmlChar*)"bank", (const xmlChar*)sb.str().c_str());
-------------------------------------------------------------------------
Aí troca o titulo do post para: [7.9 Xml/Sql] ![]()
Obrigado,
Zorzin
Editado Janeiro 11 por Zorzin
info
Grupo: Cavaleiro
Registrado: 22/10/05
Posts: 196
Reputação: 0

Hiho!
Oba x]
vlw zorzin vou faser isso e ja edito no topico =D
cya... :hi:
info
Grupo: Conde
Registrado: 18/12/05
Posts: 912
Reputação: +86
Gênero: Masculino
Char no Tibia: Kohzete

Só hj q deu pra eu ver certim
Mto boa msm
Vlw por trazer aqui
tomare q o talaturen add essa função no forgotten eu sou mto ruim em compila
flws :hi:
Vlws Zorzin Agora Entendi ![]()
Belo Code Soul x)
Meus parabéns cara...
Estou montando a versão do meu server e gostei de ver a sua iniciativa de nos trazer essa "novidade" =)
Agora mesmo já posso colocar na minha versão (Mystic OpenTibia)...
Mais uma vez parabéns e obrigado!
//Siki
info
Grupo: Lenda
Registrado: 03/10/06
Posts: 2.6k
Reputação: +309
Gênero: Masculino
Char no Tibia: Knight Orion

so o primeiro nao funciona no evolutions
... que ######!
Parabens...
Muito Bom Trabalho...
info
Grupo: Cavaleiro
Registrado: 22/10/05
Posts: 196
Reputação: 0

Hiho!
@all
vlw pelos elogios ^^
é bom saber q estou ajudando ;]
@Lordfire
num intendi, oq vc quer dizer? =X
cya... :hi:
info
Grupo: Lenda
Registrado: 03/10/06
Posts: 2.6k
Reputação: +309
Gênero: Masculino
Char no Tibia: Knight Orion

quero dizer que no luascript.cpp do evolutions nao tem lua_register(m_luaState, "getPlayerPremiumDays", LuaScriptInterface::luaGetPlayerPremiumDays);
//Lord
@Topic
Legal essa função, mas já tinha a do Colex, eu pelo menos vi..
E usei ainda
...
Mas mesmo assim, valeu por ajudar a todos...
Abraços,
//RoD
info
Grupo: Cavaleiro
Registrado: 22/10/05
Posts: 196
Reputação: 0
Hiho!
primeiramente, os devidos creditos de quem criou esse funçao:
Creditos a:
rob101 do otfans. (por faser toda funçao)
Zorzin do xtibia. (pra faser funcionar tambem em xml)
eu só estou aqui para mostrar para vcs mesmo =]
Funçoes: deposit, withdraw, balance, transfer e pagamento das houses pelo bank
Testado em: Forgotten Otserver SQL
notas:
-o que tiver *** é a parte que o zorzin fez
-se você usa server SQL, siga nos titulos (para xml e sql) ou (para sql)
-se você usa server XML, siga nos titulos (para xml e sql) ou (para xml)
começando:
luascript.cpp (para xml e sql)
depois de:
adicione:
depois de:
adicione:
depois de:
int LuaScriptInterface::luaGetPlayerPremiumDays(lua_State *L){ return internalGetPlayerInfo(L,PlayerInfoPremDays);}adicione:
int LuaScriptInterface::luaGetPlayerBalance(lua_State *L){ return internalGetPlayerInfo(L,PlayerInfoBank);}no final, adicione:
int LuaScriptInterface::luaDoPlayerDeposit(lua_State *L) { //doPlayerDeposit(cid, cash) int64_t cash = (int64_t)popNumber(L); uint32_t cid = popNumber(L); ScriptEnviroment* env = getScriptEnv(); Player* player = env->getPlayerByUID(cid); if(player){ player->bank += cash; lua_pushnumber(L, LUA_TRUE); } else{ lua_pushnumber(L, LUA_ERROR); } return 1; } int LuaScriptInterface::luaDoPlayerWithdraw(lua_State *L) { //doPlayerWithdraw(cid, cash) int64_t cash = (int64_t)popNumber(L); uint32_t cid = popNumber(L); ScriptEnviroment* env = getScriptEnv(); Player* player = env->getPlayerByUID(cid); if(player){ player->bank -= cash; lua_pushnumber(L, LUA_TRUE); } else{ lua_pushnumber(L, LUA_ERROR); } return 1; } int LuaScriptInterface::luaDoPlayerDepositTrans(lua_State *L) { //doPlayerDepositTrans(name, cash) int64_t cash = (int64_t)popNumber(L); std::string name = popString(L); unsigned long guid; if(!IOPlayer::instance()->getGuidByName(guid, name)){ lua_pushnumber(L, LUA_ERROR); } if(Player* player = g_game.getPlayerByName(name)){ player->bank += cash; lua_pushnumber(L, LUA_TRUE); } else if(IOPlayer::instance()->playerExists(name)){ Player* player = new Player(name, NULL); if(!IOPlayer::instance()->loadPlayer(player, name)){ delete player; lua_pushnumber(L, LUA_ERROR); } player->bank += cash; IOPlayer::instance()->savePlayer(player); delete player; lua_pushnumber(L, LUA_TRUE); } return 1; }luascript.h (para xml e sql)
depois de:
adicione:
depois de:
adicione:
ioplayersql.cpp (para sql)
depois de:
player->soul = result.getDataInt("soul");adicione:
player->bank = result.getDataLong("bank");depois de:
adicione:
ioplayerxml.cpp (para xml)***
depois de:
if(readXMLInteger(root, "soul", intValue)){ player->soul = intValue; }adicione:
if(readXMLInteger(root, "bank", intValue)){ player->bank = intValue; } else player->bank = 0;depois de:
sb.str(""); sb << player->soul; xmlSetProp(root, (const xmlChar*)"soul", (const xmlChar*)sb.str().c_str());adicione:
sb.str(""); sb << player->bank; xmlSetProp(root, (const xmlChar*)"bank", (const xmlChar*)sb.str().c_str());player.cpp (para xml e sql)
depois de:
adicione:
player.h (para xml e sql)
depois de:
adicone:
game.cpp (para xml e sql)
no final, adicione:
bool Game::bankWithdraw(Player* player, int64_t money, uint32_t flags) { if(player){ if (player->bank >= money) { player->bank -= money; return true; } else { return false; } } else{ return false; } }game.h (para xml e sql)
depois de:
adicione:
house.cpp (para xml e sql)
troque isso:
if(g_game.removeMoney(depot, house->getRent(), FLAG_NOLIMIT)){por isso:
//if(g_game.removeMoney(depot, house->getRent(), FLAG_NOLIMIT)){ if(g_game.bankWithdraw(player, house->getRent(), FLAG_NOLIMIT)){troque isso:
por isso:
database do sql (para sql)
ALTER TABLE `players` ADD `bank` INT( 64 ) NOT NULL DEFAULT '0' AFTER `soul` ;
examplo de NPC
(baseado no NPC Banker do Colex)
é isso, espero que aproveite!
lembrando que eu NAO fiz essa função, foi o rob101 do otfans.
cya... :hi:
Editado Janeiro 11 por soulblaster