• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!

Okienko Trade

Ezaqu

New Member
Joined
Oct 19, 2009
Messages
24
Reaction score
0
Witam poszukuje funkcji żeby po kliknięciu na dany item z aid wyskoczyło okienko Trade!
Silnik TFS 0.3.6 próbowałem wszystkiego lecz nic mi nie działa w Actions :/
 
Musisz zarejestrować funkcje z npc.cpp do ogólnego luascript.cpp, wydaje mi się że wystarczy tylko skopiować zawartość ciała tych funkcji, i powinno być dobrze.
 
Tak ale w szkielecie okienka jest takie coś:
}

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;
}


Chodzi o to np:
Npc* npc = env->getNpc();
if(!npc)

Dobra zmiana planów chodzi mi jak klikniesz na NPC wybranego przez mnie np:
NPC Sklep to otworzy się okno Trade.
 
Last edited:
Dobra zmiana planów chodzi mi jak klikniesz na NPC wybranego przez mnie np:
Jeśli się nie mylę to nie wolno dać funkcji Use na Npc.
 
Chce napisać sobie skrypt ale wszystko jest gitt tylko nie umiem wyłować okienka Trade po kliknięciu na NPC
 
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..
 
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..

Tak nawiasem
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.

Widzisz mnie wkurwiają ludzie co napiszą no forum i tylko czekają aż ktoś za nich to zrobi, a jest ich co raz więcej niestety to po pierwsze.
Po drugie
klikniesz na NPC wybranego przez mnie np: NPC Sklep to otworzy się okno Trade.
Heh, Ezaqu... Poszperaj w innych NPC... Napewno jest
Widziałeś kiedyś takiego NPC? Bo ja nie, no ale według Ciebie jest :/

Widzisz sam odezwałeś się niepotrzebnie więc siebie jest też Ci żal? :)
 
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
 
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
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).
 
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ć
 
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ć
Ale i tak trzeba je przerobić, bo j/w kolega pokazał, chcą one pobrać Id danego Npc, inaczej wywalą błąd.
 
pobieranie id jest chyba nawet w creature
ale z npc jest trochę inaczej bo chodzi o skrypt a nie numerek kopii...
przyda się chyba
Code:
void Npc::addShopPlayer(Player* player)
coś, żeby okienko zniknęło jak player odejdzie za daleko
i gdzieś poinna być funkcja creature->getNPC ale szybko przeglądając svn nie widzę
powinno wystarczyć
 
Back
Top