}
int32_t NpcScriptInterface::luaOpenShopWindow(lua_State* L)
{
//openShopWindow(cid, items, onBuy callback, onSell callback)
ScriptEnviroment* env = getScriptEnv();
Npc* npc = env->getNpc();
if(!npc)
{
reportErrorFunc(getErrorDesc(LUA_ERROR_CREATURE_NOT_FOUND));
lua_pushboolean(L, LUA_ERROR);
return 1;
}
int32_t sellCallback = -1;
if(lua_isfunction(L, -1) == 0)
lua_pop(L, 1); // skip it - use default value
else
sellCallback = popCallback(L);
int32_t buyCallback = -1;
if(lua_isfunction(L, -1) == 0)
lua_pop(L, 1);
else
buyCallback = popCallback(L);
if(lua_istable(L, -1) == 0)
{
reportError(__FUNCTION__, "item list is not a table.");
lua_pushboolean(L, LUA_ERROR);
return 1;
}
lua_pushnil(L);
ShopInfoList itemList;
while(lua_next(L, -2) != 0)
{
ShopInfo item;
item.itemId = getField(L, "id");
item.subType = getField(L, "subType");
item.buyPrice = getField(L, "buy");
item.sellPrice = getField(L, "sell");
item.itemName = getFieldString(L, "name");
itemList.push_back(item);
lua_pop(L, 1);
}
lua_pop(L, 1);
Player* player = env->getPlayerByUID(popNumber(L));
if(!player)
{
reportErrorFunc(getErrorDesc(LUA_ERROR_PLAYER_NOT_FOUND));
lua_pushboolean(L, LUA_ERROR);
return 1;
}
player->closeShopWindow();
npc->addShopPlayer(player);
player->setShopOwner(npc, buyCallback, sellCallback, itemList);
player->openShopWindow();
lua_pushboolean(L, LUA_NO_ERROR);
return 1;
}
Npc* npc = env->getNpc();
if(!npc)
Jeśli się nie mylę to nie wolno dać funkcji Use na Npc.Dobra zmiana planów chodzi mi jak klikniesz na NPC wybranego przez mnie np:
Heh, Ezaqu... Poszperaj w innych NPC... Napewno jest
PS: Żal mi tych co sie odzywają niepotrzebnie.. np: Kones. Po to jest czopie FORUM by sobie pomagać, podpowiadać itp. A nie komentować.. -.- Jak coś nie pasuje.. to nie pisz..
Forum dyskusyjne to przeniesiona do struktury stron WWW forma grup dyskusyjnych, która służy do wymiany informacji i poglądów między osobami o podobnych zainteresowaniach przy użyciu przeglądarki internetowej.
klikniesz na NPC wybranego przez mnie np: NPC Sklep to otworzy się okno Trade.
Widziałeś kiedyś takiego NPC? Bo ja nie, no ale według Ciebie jest :/Heh, Ezaqu... Poszperaj w innych NPC... Napewno jest
Wywołanie akcji onAttack(cid, target) ale także w tym środowisku nie wolno użyć komend z Npc, czyli bądź co bądź i tak musisz je zaimportować tutaj (czytaj, luascript.cpp/h).jest to wykonalne
musisz znaleźć w źródle fragment odpowiedzialnyz a wywalanie błędu gdychcesz zaatakować npc i w tym miejscu wywołać jego okienko trade
wydaje sie proste
ale możliwe, że będziesz musiał w jakiś dziwny sposób pobrać jego trade listę itp bo w tym miejscu nie będzie to normalnie dostępne
Ale i tak trzeba je przerobić, bo j/w kolega pokazał, chcą one pobrać Id danego Npc, inaczej wywalą błąd.niekoniecznie luascript
w końcu luascript.cpp odwołuje się do funkcji zawartej w innym pliku(jakiś npc.cpp czy coś, nie mam żadnego źródła na dysku to nie sprawdzę teraz) i wystarczy te funkcje wywołać
void Npc::addShopPlayer(Player* player)