Szerző Téma: Ütés letiltása  (Megtekintve 803 alkalommal)

Ütés letiltása
« Dátum: 2012. március 06. - 22:07:51 »
0 Show voters
Sziasztok, azzal a kérdéssel fordulnék hozzátok, hogy hogyan tudom azt megoldani amikor egy játékos ütni próbál akkor egybõl legyen vége az ütésnek és ne tudja megütni a másikat?
Elõre is köszi
« Utoljára szerkesztve: 2012. március 07. - 18:33:23 írta kadaradam »

Ütés letiltása
« Válasz #1 Dátum: 2012. március 07. - 07:16:00 »
0 Show voters
Valami ilyesmit próbálj meg: (nem teszteltem)
[pawn]// Ezzel nézem meg,hogy a játékos mikor nyom le egy billentyût
#define PRESSED(%0) \\
(((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0)))
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if (PRESSED(KEY_FIRE) && GetPlayerWeapon(playerid) == 0 && !IsPlayerInAnyVehicle(playerid))
{ //Ütés/Lövés gomb,nincs fegyvere és nincs jármûben
   ClearAnimations(playerid);//Animáció megállítása
}
return 1;
}[/pawn]
Nem vagyok biztos a mûködésében.

Ütés letiltása
« Válasz #2 Dátum: 2012. március 07. - 07:49:12 »
0 Show voters
Köszi szépen, sikerült.
De ha nem lenne nagy gond megkérhetném, hogy a definos részt elmagyaráznád mert ugye most tanulom a pawn-t és azt a részt nem értem :)

Ütés letiltása
« Válasz #3 Dátum: 2012. március 07. - 14:57:31 »
0 Show voters
Hogyne.
Tehát, az OnPlayerKeySate függvény egy kicsit rendhagyó a többihez képest.
( Wiki: http://wiki.sa-mp.com/wiki/OnPlayerKeyStateChange )
Paraméterei a játékos ID és a leütött billentyûk.
Tehát, normális esetben így ellenõriznéd le hogy egy játékos lenyomott egy gombot:
[pawn]if (newkeys == KEY_FIRE)[/pawn]
Csakhogy ez hibás. Ehelyett így kell:
[pawn]if (newkeys & KEY_FIRE)[/pawn]
Ez pedig még nem teljes.
A definíció és használata:
[pawn]#define PRESSED(%0) \\
(((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0)))
if (PRESSED(KEY_FIRE))
//stb[/pawn]
Tulajdonképpen egyenértékû ezzel:
[pawn]if ( ((newkeys & (KEY_FIRE)) == (KEY_FIRE)) && ((oldkeys & (KEY_FIRE)) != (KEY_FIRE)) )[/pawn]
Tehát a billentyû amit lenyomott a tüzelésé,
(newkeys & (KEY_FIRE)) == (KEY_FIRE)
de az elõzõleg lenyomott gomb nem a tüzelés
(oldkeys & (KEY_FIRE)) != (KEY_FIRE)
A wikin vannak további ellenõrzési módok (lenyomva tartja,felengedi stb..)

Ütés letiltása
« Válasz #4 Dátum: 2012. március 07. - 15:03:11 »
0 Show voters
Köszi szépen már így világos :D

Ütés letiltása
« Válasz #5 Dátum: 2012. március 07. - 18:32:19 »
0 Show voters
[mod]A problémád megoldódott, ezért a témát zárom.[/mod]

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal