[ROZWIĄZANE] wywolanie funkcji po szybkim...
Linux'
10.11.2013
Chcialbym sie spytac jak moge wywolac funkcje po szybkim kliknieciu klawisza? Czyli np ktos kliknie szybko 2x "W" to funkcja sie wywola a jak pusci klawisz to przestanie byc uzyta.
Linux'
10.11.2013
No dobrze ale ja niewiem co za co odpowiada , moglby ktos wyciagnac tylko ten kod ktory jest potrzebny do wywolania tej funkcji
Mister Silenzo
10.11.2013
Jak na moje oko to wyglądałoby tak, że po wciśnięciu oskryptowanego klawisza odpala się taksk, który po iluś sekundach blokuje możliwośc ponownego kliknięcia, a jeżeli naciśnie się klawisz drugi raz przed końcem taska to funkcja jest wywoływana
Linux'
10.11.2013
tak sie sklada ze tego sposobu uzycia funkcji tez potrzebowalem do sprinta, wiec zamiast przekladac funkcje uzycia do innego sprinta przenioslem sama animacje ruchu broni z innego sprinta (tez od darka) do tego, i mam to co chcialem
Linux'
10.11.2013
Przejrzalem nieco kod i jakby ktos chcial to zamieszczam gotowy kod jak tu uzycie funkcji mniej wiecej powinno wygladac (usunalem to co zbedne wystarczy wklepac swoj kod)
#include <amxmodx> #include <amxmisc> #include <cstrike> #include <fakemeta> #include <hamsandwich> #define PLUGIN "Sprint" #define VERSION "1.0" #define AUTHOR "DarkGL" #define MAX 32 enum sprintState { SPRINT_OFF , SPRINT_FIRST_FORWARD , SPRINT_NOT_FORWARD , SPRINT_ON } new sprintState: ePlayerState[MAX+1]; new Float: fTimePlayer[MAX+1]; new pCvarTimeDelay = 0 public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) pCvarTimeDelay = register_cvar("sprintMinecraft_delay" , "0.5"); register_forward(FM_PlayerPreThink, "fwPreThink"); } public client_connect(id) { cleanInformation(id); } public client_disconnect(id) { cleanInformation(id); } cleanInformation(id) { fTimePlayer[id] = 0.0; ePlayerState[id] = SPRINT_OFF; } bool: checkTime(id) { return(get_gametime() - fTimePlayer[id] <= get_pcvar_float(pCvarTimeDelay)); } public startMove(id) { ePlayerState[id] = SPRINT_ON; fTimePlayer[id] = 0.0; // dalszy kod wlaczonej funkcji } public stopMove(id) { ePlayerState[id] = SPRINT_OFF; fTimePlayer[id] = 0.0; // dalszy kod wylaczonej funkcji } public fwPreThink(id) { if(!is_user_alive(id)) { return PLUGIN_CONTINUE; } new iButton = pev(id , pev_button); new iOldButton = pev(id , pev_oldbuttons); switch(ePlayerState[id]) { case SPRINT_ON: { if(!(iButton & IN_FORWARD)) { stopMove(id) } } case SPRINT_OFF: { if(iButton & IN_FORWARD && !(iOldButton & IN_FORWARD)) { fTimePlayer[id] = get_gametime(); ePlayerState[id] = SPRINT_FIRST_FORWARD; } } case SPRINT_FIRST_FORWARD: { if(!checkTime(id)) { cleanInformation(id); return PLUGIN_CONTINUE; } if(!(iButton & IN_FORWARD)) { ePlayerState[id] = SPRINT_NOT_FORWARD; } } case SPRINT_NOT_FORWARD: { if(!checkTime(id)) { cleanInformation(id); return PLUGIN_CONTINUE; } if(iButton & IN_FORWARD) { startMove(id); } } } return PLUGIN_CONTINUE; }
// mozna zamknac, pomoc udzielona
Użytkownik window edytował ten post 10.11.2013 21:42
sebul
10.11.2013
Wiadomość wygenerowana automatycznie
Ten temat został zamknięty przez moderatora.
Powód: Pomoc udzielona
Jeśli się z tym nie zgadzasz, raportuj ten post, a moderator lub administrator rozpatrzy go ponownie.
Z pozdrowieniami,
Zespół AMXX.PL
Ten temat został zamknięty przez moderatora.
Powód: Pomoc udzielona
Jeśli się z tym nie zgadzasz, raportuj ten post, a moderator lub administrator rozpatrzy go ponownie.
Z pozdrowieniami,
Zespół AMXX.PL