Postado Janeiro 26, 2018 7 anos Boa pessoal, uso o evolurions 0.6.0 otserv 7.92 Minha dúvida é: quero adicionar ruby coin (conhecido como gold nugget) no meu ot, ja tenho as scripts em actions e sim funciona, mas quando vou comprar item em npc tenho que desfazer para crystal, tentei alterar na source mas quando compilo ele da o troco errado, alguem poderia me ajudar? obs: o type worth não está adicionado. aqui está minha source! Mesmo que eu adicione case ITEM_COINS_RUBY, etc... o troco do npc fica completamente bugado! Desde de ja muito obrigado pessoal!!! Editado Janeiro 26, 2018 7 anos por kkkleonardkkk (veja o histórico de edições)
Postado Janeiro 26, 2018 7 anos Muita gente não conhece essa source pois ela é muito antiga. Se você disponibilizar o download pra eu dar uma olhada eu posso tentar te ajudar.
Postado Janeiro 27, 2018 7 anos Autor velhinho vc prefere que eu mande pra vc só as sources ou o otserv completo? https://www.4shared.com/rar/PUVy0L3Uca/ULTIMO_UPLOAD_MIX_FULL_EDITAVE.html? Bom, já adiantando eu mandei o download da minha pasta do ot que eu estou trabalhando, da pra vc ver qualquer coisa, se quiser também podemos modificar juntos o ot pra ficar legal e criar coisas novas e tal... qqr coisa manda seu whats no pv ae vlww
Postado Janeiro 28, 2018 7 anos Está tudo nas mãos dele basta ele olhar pro lugar certo, 7.92 é muito antigo ainda mais as source do Xidazou Em Item.cpp procure por "case ITEM_COINS_CRYSTAL:" Vai tá assim: int Item::getWorth() const { switch(getID()){ case ITEM_COINS_GOLD: return getItemCount(); case ITEM_COINS_PLATINUM: return getItemCount() * 100; case ITEM_COINS_CRYSTAL: return getItemCount() * 10000; default: return 0; } } Substitua por: int Item::getWorth() const { switch(getID()){ case ITEM_COINS_GOLD: return getItemCount(); case ITEM_COINS_PLATINUM: return getItemCount() * 100; case ITEM_COINS_CRYSTAL: return getItemCount() * 10000; case ITEM_COINS_RUBY: return getItemCount() * 1000000; default: return 0; } } Em const79.h procure por "enum item_t {" Vai tá assim: enum item_t { ITEM_FISHING_ROD = 2580, ITEM_SHOVEL = 2554, ITEM_ROPE = 2120, ITEM_MACHETE = 2420, ITEM_SCYTHE = 2550, ITEM_COINS_GOLD = 2148, ITEM_COINS_PLATINUM = 2152, ITEM_COINS_CRYSTAL = 2160, Abaixo de "ITEM_COINS_CRYSTAL = 2160," Adicione: ITEM_COINS_RUBY = 13685, E por fim vamos em game.cpp e procure por "/* Remove a monetary value from an item*/" Vai está assim: /* Remove a monetary value from an item*/ int remaind = item->getWorth() - money; int crys = remaind / 10000; remaind = remaind - crys * 10000; int plat = remaind / 100; remaind = remaind - plat * 100; int gold = remaind; Substitua por: /* Remove a monetary value from an item*/ int remaind = item->getWorth() - money; int rubys = remaind / 1000000; remaind = remaind - rubys * 1000000; int crys = remaind / 10000; remaind = remaind - crys * 10000; int plat = remaind / 100; remaind = remaind - plat * 100; int gold = remaind; Olhando um pouco mais abaixo você verá isso: if(crys != 0){ Item* remaindItem = Item::CreateItem(ITEM_COINS_CRYSTAL, crys); ReturnValue ret = internalAddItem(cylinder, remaindItem, INDEX_WHEREEVER, flags); if(ret != RET_NOERROR){ internalAddItem(cylinder->getTile(), remaindItem, INDEX_WHEREEVER, FLAG_NOLIMIT); } } Depois é só adicionar isso acima de "if(crys != 0){" if(rubys != 0){ Item* remaindItem = Item::CreateItem(ITEM_COINS_RUBY, rubys); ReturnValue ret = internalAddItem(cylinder, remaindItem, INDEX_WHEREEVER, flags); if(ret != RET_NOERROR){ internalAddItem(cylinder->getTile(), remaindItem, INDEX_WHEREEVER, FLAG_NOLIMIT); } } e irá ficar assim: if(rubys != 0){ Item* remaindItem = Item::CreateItem(ITEM_COINS_RUBY, rubys); ReturnValue ret = internalAddItem(cylinder, remaindItem, INDEX_WHEREEVER, flags); if(ret != RET_NOERROR){ internalAddItem(cylinder->getTile(), remaindItem, INDEX_WHEREEVER, FLAG_NOLIMIT); } } if(crys != 0){ Item* remaindItem = Item::CreateItem(ITEM_COINS_CRYSTAL, crys); ReturnValue ret = internalAddItem(cylinder, remaindItem, INDEX_WHEREEVER, flags); if(ret != RET_NOERROR){ internalAddItem(cylinder->getTile(), remaindItem, INDEX_WHEREEVER, FLAG_NOLIMIT); } } if(plat != 0){ Item* remaindItem = Item::CreateItem(ITEM_COINS_PLATINUM, plat); ReturnValue ret = internalAddItem(cylinder, remaindItem, INDEX_WHEREEVER, flags); if(ret != RET_NOERROR){ internalAddItem(cylinder->getTile(), remaindItem, INDEX_WHEREEVER, FLAG_NOLIMIT); } } if(gold != 0){ Item* remaindItem = Item::CreateItem(ITEM_COINS_GOLD, gold); ReturnValue ret = internalAddItem(cylinder, remaindItem, INDEX_WHEREEVER, flags); if(ret != RET_NOERROR){ internalAddItem(cylinder->getTile(), remaindItem, INDEX_WHEREEVER, FLAG_NOLIMIT); } } Pronto. Compile sua source e vá comprar seus itens. Editado Janeiro 28, 2018 7 anos por Roy (veja o histórico de edições)
Participe da conversa
Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.