pet.is_mine() bővítés

Indította TheSLESH, 2018-09-11, 10:47:24

Sziasztok, valaki tudna segíteni abban, mert sajnos nem tudom úgy kibővíteni, hogy ha valakinek a petje, akkoris lefusson a függvény, ne pedig csak akkor, ha saját.
mch-t próbáltam átírni true-ra, de sajnos nem.
int pet_is_mine(lua_State* L)
{
CQuestManager& q = CQuestManager::instance();
LPCHARACTER mch = q.GetCurrentCharacterPtr();
LPCHARACTER tch = q.GetCurrentNPCCharacterPtr();
CPetSystem* petSystem = mch->GetPetSystem();
CPetActor* petActor = petSystem->GetByVID(tch->GetVID());

lua_pushboolean(L, tch && tch->IsPet() && petActor && petActor->GetOwner() == mch);
return 1;
}
Az ember csak fiatalon találhat ki igazán új dolgokat. Utána már túl tapasztalt, túl híres (...) és túl ostoba.

2018-09-11, 14:20:04 #1 Utolsó szerkesztés: 2018-09-11, 14:33:20 Szerző: UnKn0Wn
Először tisztázni kellene pontosan mit is szeretnél.
Pl a csoportodban, céhben, barátlistán, vagy egyéb más dolog által megkülönböztetett embernek is lefusson, de csak neki(k), tehát egy idegennek ne. Vagy idegeneknek is?
utóbbi esetben nem kell hozzányúlni a forráshoz, szimplán így kell:

when petid1 or petid2 or  petid3 or  petid4 [...] petidn.click begin
if pet.is_mine() then
  syschat("Ez a te peted")
else
  syschat("Ez nem a te peted")
end
end



Pet klónok miatt, illetve az etetés miatt. Ha van egy tárgy, ami csinál valamit a pettel, akkor azt ne lehessen olyan petre ráhúzni, ami valakié, csak olyanra, ami a pályán regenből jön, ezt próbáltam megoldani, de sikertelenül.

Üzenet összefésülés: 2018-09-11, 16:44:01

Megoldás lenne azis, hogy más ID-k ről lemásolom a petek modeljeit, de egyszerübbnek gondolom csak ezt kibővíteni, és máris nem kell 50 új sort beírnom mindenhova..
Az ember csak fiatalon találhat ki igazán új dolgokat. Utána már túl tapasztalt, túl híres (...) és túl ostoba.

2018-09-11, 16:51:21 #3 Utolsó szerkesztés: 2018-09-11, 16:53:03 Szerző: UnKn0Wn
Tehát te egy pet_is_not_mine-t akarsz?
Lehet tagadni questben amúgy, nem csak az else-el mint feljebb írtam, hanem így is:

when petid.click or petid2.click [...] with pet.is_mine() == false begin
vagy
if pet.is_mine() == false then
if not pet.is_mine() then
(utolsóban nem vagyok biztos ;D )

De nem érted még mindig, tudom hogy lehet tagadni, de ez csak az én petemet nézi. Ugy tökéletes is, de tegyük fel ott állsz te, eg karakterrel, melletted én. Tagadással csináltam, de akkoris ha én ráhuzom a pet kaját vagy a klónozót, a petedre, akkor nem ellenorzi, a sajatomnal pedig igen, illetve mondtam hogy a leidézett peteknél szeretném a klonozót hasznalni szoval arra pedig ellenoriznem kell. Valami olyan megoldás kellene nekem, hogy ha a petnek van owner, akkor false, else true.
Az ember csak fiatalon találhat ki igazán új dolgokat. Utána már túl tapasztalt, túl híres (...) és túl ostoba.

Ez a rész senkinek nem tűnik fel?
Idéz... && petActor->GetOwner() == mch)

Ezt próbáltam átírni True-ra, mármint lehet én gondolomhülyén, de "Ha van tulaja" "GetOwner() == True" vagy nem?
Az ember csak fiatalon találhat ki igazán új dolgokat. Utána már túl tapasztalt, túl híres (...) és túl ostoba.

Látom te se nagyon érted mi micsoda forráson belül.
int pet_is_pet(lua_State* L)
{
LPCHARACTER tch = CQuestManager::instance().GetCurrentNPCCharacterPtr();
lua_pushboolean(L, tch && tch->IsPet());
return 1;
}

Idézetet írta: TheSLESH Dátum 2018-09-12, 07:54:12
Ezt próbáltam átírni True-ra, mármint lehet én gondolomhülyén, de "Ha van tulaja" "GetOwner() == True" vagy nem?
LPCHARACTER-t akarsz hasonlítani 1 boollal? :o ???
Am arra gondoltam amit végül p3ng3r leírt, h töröld ezt a részt, hisz ha petet akarod nézni mit számít ki a tulaja...? és ha azt kitörlöd azt kapod mint p3ng3rnél, csak ő még kicsit kipucolta a felesleges dolgokat