GTA Közösség - A magyar GTA fórum

San Andreas Multiplayer (SA-MP) => SA-MP: Szerverfejlesztés => Segítségkérés => A témát indította: xSkillZ7x - 2012. július 04. - 16:32:12

Cím: PRESSED, RELEASED problema
Írta: xSkillZ7x - 2012. július 04. - 16:32:12
Hello.Az uj scriptemet keszitem,aminek a lenyege hogy meg tudod nezni hogy milyen billentyuket nyomtal.Ez TextDrawSprite al mukodik,es ha az adott gombot meg nyomod annak el valtozik a szine,es ha elengeded,akkor meg vissza all eredeti szinere.Persze a gombjait masnak is meg nezheted.Na de most nem terek ki arra,hanem lenne egy kis gond.
Par bugg van benne.
Mikor a jarmuben meg nyomom a Q,E gombokat,azaz oldalrol nezes stb akkor az E betu megy rendesen.Pontosabban ha megnyomom az E betut a sprite a terv szerint megvaltoztatja a szinet,es ha elengedem vissza all eredeti szinere,viszont a Q -t hiaba engedem el ha megnyomtam ugyan voros szine lessz.a KEY_UP,DOWN,LEFT,RIGHT sem megy.Ha pedig a jarmuben nyomom a W-t akkor meg a szokoz gomb is kivirul.Nem tudom mi lehet.Meg mutatom a kodot.Probaltam tobb fele keppen,mint peldaul:
 

public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
    if (PRESSED(KEY_CROUCH)) {
PlayerTextDrawColor(playerid, C[playerid], -16776961);
    } else if (RELEASED(KEY_CROUCH)) {
PlayerTextDrawColor(playerid, C[playerid], -1);
} else if (PRESSED(KEY_JUMP)) {
PlayerTextDrawColor(playerid, Ctrl[playerid], -16776961);
    } else if (RELEASED(KEY_JUMP)) {
PlayerTextDrawColor(playerid, Ctrl[playerid], -1);
} else if (PRESSED(KEY_FIRE)) {
PlayerTextDrawColor(playerid, LeftClick[playerid], -16776961);
    } else if (RELEASED(KEY_FIRE)) {
PlayerTextDrawColor(playerid, LeftClick[playerid], -1);
} else if (PRESSED(KEY_SPRINT)) {
PlayerTextDrawColor(playerid, Space[playerid], -16776961);
    } else if (RELEASED(KEY_SPRINT)) {
PlayerTextDrawColor(playerid, Space[playerid], -1);
} else if (PRESSED(KEY_SECONDARY_ATTACK)) {
PlayerTextDrawColor(playerid, Enter[playerid], -16776961);
    } else if (RELEASED(KEY_SECONDARY_ATTACK)) {
PlayerTextDrawColor(playerid, Enter[playerid], -1);
} else if (PRESSED(KEY_LOOK_RIGHT)) {
PlayerTextDrawColor(playerid, E[playerid], -16776961);
    } else if (RELEASED(KEY_LOOK_RIGHT)) {
PlayerTextDrawColor(playerid, E[playerid], -1);
} else if (PRESSED(KEY_LOOK_LEFT)) {
PlayerTextDrawColor(playerid, Q[playerid], -16776961);
    } else if (RELEASED(KEY_LOOK_RIGHT)) {
PlayerTextDrawColor(playerid, Q[playerid], -1);
}
    return 1;
}

 
Mint ahogy mondtam a W,A,S,D sem megy rendesen.
 

if (PRESSED(KEY_UP))
{
PlayerTextDrawColor(playerid, W[playerid], -16776961);
} else if (RELEASED(KEY_UP)) {
PlayerTextDrawColor(playerid, W[playerid], -1);
return 1;
}
if (PRESSED(KEY_DOWN))
{
PlayerTextDrawColor(playerid, S[playerid], -16776961);
} else if (RELEASED(KEY_DOWN)) {
PlayerTextDrawColor(playerid, S[playerid], -1);
return 1;
}
if (PRESSED(KEY_LEFT))
{
PlayerTextDrawColor(playerid, A[playerid], -16776961);
} else if (RELEASED(KEY_LEFT)) {
PlayerTextDrawColor(playerid, A[playerid], -1);
return 1;
}
if (PRESSED(KEY_RIGHT))
{
PlayerTextDrawColor(playerid, D[playerid], -16776961);
} else if (RELEASED(KEY_RIGHT)) {
PlayerTextDrawColor(playerid, D[playerid], -1);
return 1;
}

 
Nem vaygok pro,szoval lehet hogy sok a hibam.
Cím: PRESSED, RELEASED problema
Írta: Zsolesszka - 2012. július 04. - 17:32:20
Egy kicsit elgondolkodtató hogy PRESSED RELEASED, lenyomva illetve felengedõ billentyû, OnPlayerKeyStateChange alatt.
Azt tudni illik hogy ez az eljárás akkor hívódik meg ha lenyomsz egy billentyût vagy épp elengeded azt.
Tehát ha lenyomod a billentyût akkor egyszer meghívódik ha ~20 perc múlva elengeded akkor újra meghívódik.
Köztes állapot nincs.
A lenyomva tartás folyamatos ellenõrzésére egy ismétlõdõ funkcióra lenne szükség talán OnPlayerUpdate alatt GetPlayerKeys használatával.


De ez lehet csak az én gondolat menetem.
 
Talán maradj a pontos billentyû lekérdezésnél.
 
if(newkeys == KEY_SECONDARY_ATTACK)
Cím: PRESSED, RELEASED problema
Írta: Bazsi - 2012. július 04. - 19:52:18
Hello! Nálam is ez volt a probléma, de (nekem) megoldódott, remélem, hogy nálad is fog menni, annyit kell, hogy nem a #define-st használod, hanem a hosszabb változatokat:
Megnyomja:
 
if ((newkeys & KEY_FIRE) && !(oldkeys & KEY_FIRE))

 
Elengedi:
 
if ((oldkeys & KEY_FIRE) && !(newkeys & KEY_FIRE))
Cím: PRESSED, RELEASED problema
Írta: xSkillZ7x - 2012. július 05. - 07:35:31
Idézetet írta: ɐʞzssǝlosz date=1341415940\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"23785\" data-ipsquote-contentclass=\"forums_Topic
Azt tudni illik hogy ez az eljárás akkor hívódik meg ha lenyomsz egy billentyût vagy épp elengeded azt.
 


 

Am koszonom mindenkinek ki probalom.:P