What's new

-Tibia 7.60 Sprzeda? przedmiot?w w pojemnikach u NPC

Status
Not open for further replies.

Saelasti

Advanced User
Joined
Apr 1, 2014
Messages
192
Reaction score
25
Dalsza cz???.


Na bazie kodu od: nfries88
Autor: BlackKnight
Modyfikacja (Lua): Soulblaster / Kod - otfans.net
Modyfikacja ko?cowa (Wyb?r pojemnika): Crea
Modyfikacja (PL): Blizzar?aviD
Link ?rod?owy (ko?cowy): LINK
Testowany na: YurOTS 0.4.9f
Opis: Po wprowadzeniu tego kodu, w plikach .lua u NPC b?dzie mo?na dodawa? funkcj? sprzedawania postaciom przedmiot?w w pojemnikach (np. runek w bp'kach), ustala? b?dzie mo?na: jakie przedmioty ma sprzeda? NPC, ilo?? sztuk/pocisk?w/rodzaj (np. przy jedzieniu, monetach, runek i fluid?w), cen? ca?ego zestawu oraz w jakim pojemniku ma te przedmioty NPC sprzedawa? (np. bp, bag, chest).


Kod/skrypt:
1. w npc.cpp
pod:
[CPP]int NpcScript::luaIsPremium(lua_State* L)
{
int id = (int)lua_tonumber(L, -1);
lua_pop(L, 1);

Npc* mynpc = getNpc(L);
Creature* creature = mynpc->game->getCreatureByID(id);
Player* player = dynamic_cast<Player*>(creature);

if (player)
lua_pushboolean(L, player->isPremium());
else
lua_pushboolean(L, false);

return 1;
}
#endif //YUR_PREMIUM_PROMOTION[/CPP]
dodaj:
[CPP]int NpcScript::luaBuyCont(lua_State *L)
{
int bpid = (int)lua_tonumber(L, -1);
int cost = (int)lua_tonumber(L, -2);
int count = (int)lua_tonumber(L, -3);
int itemid = (int)lua_tonumber(L, -4);
int cid = (int)lua_tonumber(L, -5);
lua_pop(L,6);
Npc* mynpc = getNpc(L);
Creature* creatore = mynpc->game->getCreatureByID(cid);
Player *player = dynamic_cast<Player*>(creatore);
if (player){
if (player->getCoins(cost)){
if (player->removeCoins(cost)){ // double check

//Start of Container Stuff
Container *backpack = dynamic_cast<Container*>(Item::CreateItem(bpid));
if(backpack)
{
for(int i = 0; i < backpack->capacity(); ++i){
backpack->addItem(Item::CreateItem(itemid, count));
}
player->addItem(backpack);
}
//End
mynpc->doSay("Prosze bardzo.");
}
else{
mynpc->doSay("Nie masz tylu pieniedzy.");
}
}
else{
mynpc->doSay("Nie masz tylu pieniedzy.");
}
}
return 1;
} [/CPP]

2. w npc.cpp
pod:
[CPP]lua_register(luaState, "pay", NpcScript::luaPayMoney);[/CPP]
dodaj:
[CPP]lua_register(luaState, "BuyContainer", NpcScript::luaBuyCont);[/CPP]

3. w npc.h
pod:
[CPP]static int luaPayMoney(lua_State *L);[/CPP]
dodaj:
[CPP]static int luaBuyCont(lua_State *L);[/CPP]

4. w data\npc\scripts w wybranym pliku .lua po napisaniu odpowiedniej reakcji NPC umie??:
[LUA]BuyContainer(cid,XXXX,Y,ZZZZ,WWWW)[/LUA]

,gdzie:
XXXX - ID sprzedawanego przedmiotu,
Y - ilo?? pocisk?w (przy runach), ilo?? sztuk (przy monetach, jedzeniu i innych policzalnych przedmiotach), rodzaj (przy cieczach),
ZZZZ - cena za pojemnik i jego zawarto??,
WWWW - ID pojemnika, w kt?rym maj? znajdowa? si? sprzedawane przedmioty.
Uwaga, ilo?? przedmiot?w zale?y od pojemno?ci pojemnika, w kt?rym je sprzedajemy; je?eli np. sprzedajemy w worku (bag) to otrzymamy 8 sztuk przedmiot?w, natomiast je?eli w plecaku to 20.

Projekt przebudowa? (Ctrl+F11), zapisa? zedytowane pliki .lua i gotowe.
 
Status
Not open for further replies.
Top