Szuka?em, pr?bowa?em w ko?cu znalaz?em. Ka?dy z nas chce mie? na swoim otsie co? cenniejszego ni? crystal coinsy nic prostszego szybki skrypt w actions i nasze cc zamieniamy na per?y scarab coinsy i tym podobne rzeczy lecz pozostaje ma?e ale... nie da si? nimi handlowa?. Mi w ko?cu uda?o si? znale?? rozwi?zanie wystarczy?o pomy?le?.
zr?bmy przyk?adowo pod zamian? na talony
otwieramy w ?r?dle const.h game.cpp item.cpp oraz global.lua w folderze data.
w const.h wyszukujemy:
i pod tym dodajemy:
nastepnie przechodzimy do game.cpp i znajdujemy:
miedzy
dodajemy
a przed
dodajemy
przechodzimy do item.cpp i znajdujemy:
przed default dodajemy
Dla TFS
const.h edytujemy tak samo
item.cpp z ta roznica ze nie wyszukujemy funkcji int Item::getWorth() const tylko int32_t Item::getWorth() const i wklejamy z dodatkowym break;
w game.cpp znajdujemy definicje funkcji addMoney:
podmieniamy ja na:
kompilujemy silnik
wchodzimy do global.lua i dodajemy
je?eli chcemy inny przedmiot zamiast walute podmieniamy:
to co na czerwono na nazwe przedmiotu (np. SCARAB)
to co na niebiesko na id przedmiotu ktory chcemy za walute
to co na pomaranczowo na skrot nazwe najlepiej 4 literowy (np. scar)
i tyle
zr?bmy przyk?adowo pod zamian? na talony
otwieramy w ?r?dle const.h game.cpp item.cpp oraz global.lua w folderze data.
w const.h wyszukujemy:
PHP:
ITEM_COINS_GOLD = 2148,
ITEM_COINS_PLATINUM = 2152,
ITEM_COINS_CRYSTAL = 2160,
Kod:
ITEM_COINS_[COLOR="Red"][B]TALONS[/B][/COLOR] = [B][COLOR="Blue"]2972[/COLOR][/B],
nastepnie przechodzimy do game.cpp i znajdujemy:
PHP:
int remaind = item->getWorth() - money;
int crys = remaind / 10000;
remaind = remaind - crys * 10000;
int plat = remaind / 100;
remaind = remaind - plat * 100;
int gold = remaind;
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);
}
}
money = 0;
}
Kod:
int remaind = item->getWorth() - money;
int crys = remaind / 10000;
Kod:
int [COLOR="Orange"][B]tlns[/B][/COLOR] = remaind / 1000000;
remaind = remaind - [COLOR="Orange"][B]tlns[/B][/COLOR] * 1000000;
a przed
PHP:
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);
}
}
Kod:
if([COLOR="Orange"]tlns[/COLOR] != 0){
Item* remaindItem = Item::CreateItem(ITEM_COINS_[COLOR="Red"][B]TALONS[/B][/COLOR], [COLOR="Orange"][B]tlns[/B][/COLOR]);
ReturnValue ret = internalAddItem(cylinder, remaindItem, INDEX_WHEREEVER, flags);
if(ret != RET_NOERROR){
internalAddItem(cylinder->getTile(), remaindItem, INDEX_WHEREEVER, FLAG_NOLIMIT);
}
}
przechodzimy do item.cpp i znajdujemy:
PHP:
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;
}
}
Kod:
case ITEM_COINS_[COLOR="Red"][B]TALONS[/B][/COLOR]:
return getItemCount() * 1000000;
Dla TFS
const.h edytujemy tak samo
item.cpp z ta roznica ze nie wyszukujemy funkcji int Item::getWorth() const tylko int32_t Item::getWorth() const i wklejamy z dodatkowym break;
w game.cpp znajdujemy definicje funkcji addMoney:
PHP:
void Game::addMoney(Cylinder* cylinder, int32_t money, uint32_t flags /*= 0*/)
{
int32_t crys = money / 10000;
money -= crys * 10000;
int32_t plat = money / 100;
money -= plat * 100;
int32_t gold = money;
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);
}
}
Kod:
void Game::addMoney(Cylinder* cylinder, int32_t money, uint32_t flags /*= 0*/)
{
int32_t [COLOR="Orange"]tlns[/COLOR] = money / 1000000;
money -= [COLOR="Orange"]tlns[/COLOR] * 1000000;
int32_t crys = money / 10000;
money -= crys * 10000;
int32_t plat = money / 100;
money -= plat * 100;
int32_t gold = money;
if([COLOR="Orange"]tlns[/COLOR] != 0)
{
Item* remaindItem = Item::CreateItem(ITEM_COINS_[COLOR="Red"]TALONS[/COLOR], [COLOR="Orange"]tlns[/COLOR]);
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);
}
kompilujemy silnik
wchodzimy do global.lua i dodajemy
Kod:
ITEM_[COLOR="Red"][B]TALON[/B][/COLOR]_COIN = [B][COLOR="Blue"]2972[/COLOR][/B]
je?eli chcemy inny przedmiot zamiast walute podmieniamy:
to co na czerwono na nazwe przedmiotu (np. SCARAB)
to co na niebiesko na id przedmiotu ktory chcemy za walute
to co na pomaranczowo na skrot nazwe najlepiej 4 literowy (np. scar)
i tyle