Ezzel csak annyi a baj, hogy ha a PVar értéke egy ShowPlayerDialog után megváltozik, utána a spammelt dialogok mind azt a dialogid-t kapják meg. Így gyakorlatilag ott vagyunk ahol a part szakad: az utoljára megjelenített dialog még mindig meghívásra kerülhet akárhányszor.[/quote]
Egy ShowPlayerDialog után természetes hogy megváltozik a PVar értéke hiszen a kicserélt ShowPlayerDialogEx alias(SA_ADH_SPD) kerül meghívásra ahol újból tárolásra kerül PVar-ban a dialogid.
Abban amit írtam nincs semmi hook dolog ami plusz CallLocalFunction-t igényelne ezt az _ALS megoldást csak public funkcióknál szokás alkalmazni native funkcióknál nem.
Egyszerûen arról van szó hogy a definició
[pawn]#define ShowPlayerDialog ShowPlayerDialogEx //A szkript lefordításakor (compile) az összes ShowPlayerDialog kicserélésre kerül erre ShowPlayerDialogEx[/pawn]
kicseréli az összes ShowPlayerDialog szöveget ShowPlayerDialogEx-re.
Ha egy dialog meg lett jelenítve majd OnDialogResponse alatt végrehajtásra is került ott szerepel egy return 1; ami lehetne a PVar értékének törlése/nullázása is, a visszatérési érték 1 lesz.
[pawn]return SetPVarInt(playerid, antidialog_id, 0);[/pawn]
Természetesen a dialogid-kre figyelni kell szkriptek terén pl:
0-2000-ig gamemod,
2001-3000 filterscript 1,
3001-4000 filterscript 2,
és így tovább.
Mivel sok értelmetlen dolgot hordtál itt össze-vissza, ezért úgy gondolom, válaszolok mindegyikre külön.[/quote]
Nem kerültem ellentmondásba magammal itt te vagy megkeveredve pöttyet és nincs semmi értelmetlen abban amit írtam mivel ezt a késõbbi válaszaidban is megerõsíted.
Ez vicc:
Az if (SA_ADH_DR) ellenõrzi, hogy a jelenlegi scriptben van e OnDialogResponse callback.[/quote]
Ha eleve betette az .inc fájlt akkor már van OnDialogResponse akkor minek ellenõrzi pluszba minden meghívásnál van-e, (jó a global változóban tárolt adatot ellenõrzi new bool:SA_ADH_DR; ), de minek?
+ Egy építõ jellegû javaslat: hosszabb PVar nevû értékek használata több számítási idõt igényel.[/quote]
Nem használok túl sok Pvart talán van 10 összesen, így teljesen mindegy milyen hosszú nevet adok neki, és fõleg nem használom loop funkciókban sem, így felesleges ez a tanács.
Erre inkább nem válaszolnék. Ajánlom az if (SA_ADH_ODR_dialogid... sort áttanulmányozni.[/quote]
Áttanulmányoztam le is írtam még az este, olvasd el újra ha gondolod.
Hirtelen ennyi fért bele, de lehet írok még.
(52): warning 225: unreachable code
[/quote]
Mielõtt kérdeznél test_cmds.pwn-be próbáltam tenni.
Épp akartam egy szkripttel bizonyítani valamit, amit észre vettem az egészben, de ha még alkalmazni se lehet hiba nélkül nehéz lesz.
Majd nézem a fórumot és ha lesz újabb verzió, megpróbálkozok vele újra.
Mivel én csak alap ötletet írtam össze hirtelen és nem egy teljes dolgot, így találni benne kifogást hogy most nincs a PVar nullázva a második hozzá szólásban közöltem mikor kell törölni.
Native funkciót nem szokás _ALS hook dologgal megírni lásd Ryder`GetVehicleColor.inc
Ne is lovagolj rajt mivel hiba nélkül használni se lehet. :D :D
Nem érdekes a visszatérési érték.[/quote]
Miért is? Épp írtad a szkriptben ha return 0; akkor kerül meghívásra a többi szkriptben a többi OnDialogResponse ha return 1; akkor nem kerül meghívásra a többi.
Akkor most ez hogy is van, most meg nem érdekes?
Mutass egy kódrészletet, ami szerinted nem hatékony benne.A függvénykönyvtárral nincsen probléma. Ezt kilehet játszani fõleg 4 bytes integerrel amit sobeitben is alkalmaztak.
Vagy mondd el, mi a gond vele.
Szerintem kurvára de felesleges :D Meg egy képzett, mondhatni profibb programozó nem azon fogja törni a fejét, hogy a dialogidt megváltoztassa, és kibannolja az adminokat.. xD Egy 10-12 éves emg szerintem nem tudja megcsinálni.. De kitudja. csak egy vélemény.Ugyan ez a véleményem :D
Egyébként jóféle :D