Szörny halála esetén, az összes játékos

Indította TheSLESH, 2018-08-22, 18:17:43

Sziasztok! Egy olyanban akadtam el, hogy hogyan lehetne egy vagy több, szörny halálakor, az összes, a pályán lévő játékosnak növelni egy értéket az adatbázisban? Tehát, hogy mindenki aki azon a pályán tartózkodik, ahol egy bizonyos szörny meghal, ott kapjanak mondjuk egy szintet, példának írtam.
Nem a dungeonos megoldás érdekelne, mert úgy szeretném, ha ez a szörny map1-en van, akkor mindenki aki ott van megkapja, de ha dungeonban van, akkor is megkapják, egyedül a megölt szörny Mapindexét nem tudom lekérdezni,ha esetleg valakinek erre lenne egy funkciója, hálás lennék érte.
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-08-22, 18:34:24 #1 Utolsó szerkesztés: 2018-08-22, 18:43:58 Szerző: K3zX
Alapból nem hinném hogy lenne erre lehetőség, ha nem akarsz belenyúlni a forrásban akkor indítani kell egy loop_timert ami pl 10másodpercenként ellenőriz egy eventflagot, és az az eventflag akkor kap értéket amikor meghal a szörny. De jó lenne ha az a timer nem futna mindig, hanem csak ha egy GM aktiválja, akár szintén eventflaghez kapcsolódhatna. Ha úgy akarod hogy mindig fusson mert ez nem ilyen alkalmi/pár napos event akkor inkább ne így csináld, bár sok szerveren még mindig bent van a "Sé mutatása a leltárban" (timer+query) ami szerintem jobban terheli a szervert mint ez ;D

Szerk: Az lemaradt hogy a szörny megölésekor az event flag amit ad legyen a mapindex száma, így lehet ellenőrizni a mappot amikor a loop_timer fut.

Nekem forrásos megoldás kellene, de köszönöm hogy írtál.
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.

Válaszd ki a megölt karaktert mint jelenlegi karakter és máris le tudod kérdezni:
local me = pc.get_vid()
local target = npc.get_vid()
pc.select(target)
local mapindex = pc.get_map_index()
pc.select(me)


Üzenet összefésülés: 2018-08-22, 18:45:42

Avagy szimplán írsz 1 új funkciót questlib_npc-be, hogy le tudd kérdezni npc.get_map_index-szel a dolgot és nem kell selectelgetni.

2018-08-22, 18:46:30 #4 Utolsó szerkesztés: 2018-08-22, 18:49:07 Szerző: K3zX
És azt hogy oldja meg loop_timer v új funkció nélkül hogy ne csak az kapjon aki megölte, hanem mindenki aki a mappon van? (Amúgy első hsz-emet kicsit szerkesztettem mert sietve írtam le)

Nemtudom, csak annyit írt h mapindexet nem tudja lekérni a mobét, bár jobban belegondolva nem is szükséges az a sok szarság, hisz elég a playerét lekérni, hisz kétlem h másik mapindexről képes lenne vki mobot ölni :-X ;D

Amúgy lehet amit én mondtam az első hsz-be nem is lenne annyira tré, mert amúgy a sé mutatása a leltárban (régi) biztos hogy jobban terheli, az is 10-15mp-s loop timer, csak abban még query is van ;D Mégse laggoltak sz@rrá tőle a szerverek. Persze egy új questfunkció lenne a frankó give_item_in_map, give_level_in_map stb ezt nem tagadom :)

Dunnó, én eleve nem látom sok értelmét ennek. ???
Bent vannak 1000-en a mapon, 1 vki leveri a mobot és mindenki lvuppol, wály?? :'(

lvup csak egy példa volt.
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.

Ahogy az én példám is, miért kéne bárki másnak kapni vmit amiért én öltem meg a szörnyet? :o ???
Ennyi erővel 1 player játszik a szerón, a többi csak áll és vár amíg fullos nem lesz, vagy beviszel 20 karit és farmolsz mint állat. :-\ :-X

Runpontos megoldás miatt gondoltam ezt ,de igazad van, hülyeség így, mert bevisz sok karaktert és kész.

Üzenet összefésülés: 2018-08-22, 19:22:48

Báár, ha IP-t ellenőriztetek belépéskor? Valahol láttam erre egy funkciót, hogy IP ellenőrzés.
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.

Lehet, de azon nem változtat, hogy ha pl valóban 1000 játékos van fent a mapon, mind megkapja.

2018-08-22, 19:53:05 #12 Utolsó szerkesztés: 2018-08-22, 20:04:08 Szerző: Distraught
Csinálj egy vektort, legyen static. Majd ha valaki belép a map-re, akkor adj hozzá egy a játékosra mutató pointert, ha kilép, töröld ki onnan. A szörny halálakor pedig iterálj végig a tömbön, és mindegyikre futtass le egy szintadást.



módosítva, hülyeséget írtam, nem kell shared_ptr, mivel ha kiszeded a vektorból pointert, nem fog deallokálódni a memória még

C++ programmer at Gameloft

V questflagben eltárolgatja az IP-ket és ha van már nem engedi be a plélyert ::)
Elvégre nem akar forráshoz nyúlni, bár nem értem miért, amikor 1000x egyszerűbb ott minden.

2018-08-22, 20:12:08 #14 Utolsó szerkesztés: 2018-08-22, 20:14:00 Szerző: K3zX
Idézetet írta: TheSLESH Dátum 2018-08-22, 18:36:30
Nekem forrásos megoldás kellene, de köszönöm hogy írtál.

Akar ő ;D

#yolo #tudokolvasni
Kicsit siettem és a nekem-ből a "ke"-t sietség miatt lehagytam, így az jött le h nem forrás kell neki ;D ;D

2018-08-23, 12:12:25 #16 Utolsó szerkesztés: 2018-08-23, 12:24:10 Szerző: masodikbela
Csak kombináld ezt a kettőt:

+


Előbbire nem is biztos, hogy szükséged van, attól függ hogy akarod megoldani, mert hát megírni nyilván nem fogom...
Ha nem látod a válaszom, valamit elrontottál:

Köszönöm béla a segítséget! Sikerült! Ment a plusz!
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.