Źle działająca funkcja (freeze)
Filip1512
22.09.2012
Cześć,
w wolnym czasie piszę i uzupełniam sobie mój własny plugin (coś w stylu ruletki, lecz pisane od 0 i inaczej działa), ale do rzeczy.
Funkcja, która odpowiada za zamrożenie na 5 sekund trochę źle działa - zamraża ona dopiero po 5 sekundach i w dodatku przy zmianie broni już nie ma tego zamrożenia.
Miejsca, w których jest ta funkcja(wedlug kolejnosci):
Całe sma:
Użytkownik `NN edytował ten post 22.09.2012 13:56
w wolnym czasie piszę i uzupełniam sobie mój własny plugin (coś w stylu ruletki, lecz pisane od 0 i inaczej działa), ale do rzeczy.
Funkcja, która odpowiada za zamrożenie na 5 sekund trochę źle działa - zamraża ona dopiero po 5 sekundach i w dodatku przy zmianie broni już nie ma tego zamrożenia.
Miejsca, w których jest ta funkcja(wedlug kolejnosci):
new bool:freeze[33];
register_event("CurWeapon","speed150a","be", "1=1")
case 4: {
ColorChat(id, RED, "Nie mozesz sie ruszac przez 5 sekund!")
cs_set_user_money(id, (cs_get_user_money(id)-get_cvar_num("kasa_bonus")), 1)
freeze[id] = true
set_task(5.0, "zamrozenie", id)
}
public CurWeapon(id){
if(!is_user_alive(id)){
return PLUGIN_CONTINUE;
}
if(freeze[id] == true){
set_user_maxspeed(id, 0.1);
}
return PLUGIN_CONTINUE;
}
public zamrozenie(id){
set_user_maxspeed(id);
}
Całe sma:
Spoiler
Użytkownik `NN edytował ten post 22.09.2012 13:56
dasiek
22.09.2012
Może spróbuj tak.
case 4: { ColorChat(id, RED, "Nie mozesz sie ruszac przez 5 sekund!") cs_set_user_money(id, (cs_get_user_money(id)-get_cvar_num("kasa_bonus")), 1) freeze[id] = true set_user_maxspeed(id,-1.0) set_task(5.0, "zamrozenie", id) }
public CurWeapon(id){ if(!is_user_alive(id)){ return PLUGIN_CONTINUE; } if(freeze[id] == true){ set_user_maxspeed(id,-1.0) } return PLUGIN_CONTINUE; } public zamrozenie(id){ freeze[id] = false; set_user_maxspeed(id,1.0); }
Filip1512
22.09.2012
Wartość -1 z tego co czytałem to zmieni prędkość na standardową, więc zmienię na 0.1 i zaraz dam odp
A więc tak - ustawiając w całości według tego co napisałeś, w momencie zamrozenia ekran bardzo lekko się trzęsie (tylko podczas próby ruchu), a po tych 5 sekundach całkowicie stoję w miejscu już bez drgania ekranu, lecz nadal nie mogę się ruszyć. Dopiero po zmianie broni mogę się ruszyć, nawet przed tym czasem.
Ustawiając wartości takie:
Miałem na odwrót - przez pierwsze 5 sekund z ekranem (podczas próby ruchu) nic się nie dzieje, a po tych 5 sekundach już się zaczyna trząść, z bronią jest nadal tak samo, czyli po zmianie broni prędkość zmienia się na normalną, bez względu na to, czy minęło 5 sekund, czy nie.
Przy okazji, kolejna funkcja, która odpowiada za ograniczenie prędkości gracza (speed150) do 150, po zmianie broni nie działa, lecz jeśli nie zmieniam broni to wszystko jest ok.
Ps. Napisz mi na PW (bądź też nie), jeśli chcesz IP mojego testowego serwera i zobaczyć jak to wygląda
A więc tak - ustawiając w całości według tego co napisałeś, w momencie zamrozenia ekran bardzo lekko się trzęsie (tylko podczas próby ruchu), a po tych 5 sekundach całkowicie stoję w miejscu już bez drgania ekranu, lecz nadal nie mogę się ruszyć. Dopiero po zmianie broni mogę się ruszyć, nawet przed tym czasem.
Ustawiając wartości takie:
case 4: {
ColorChat(id, RED, "Nie mozesz sie ruszac przez 5 sekund!")
cs_set_user_money(id, (cs_get_user_money(id)-get_cvar_num("kasa_bonus")), 1)
freeze[id] = true
set_user_maxspeed(id, 0.1)
set_task(5.0, "zamrozenie", id)
}
public CurWeapon(id){
if(!is_user_alive(id)){
return PLUGIN_CONTINUE;
}
if(freeze[id] == true){
set_user_maxspeed(id, 0.1)
}
return PLUGIN_CONTINUE;
}
public zamrozenie(id){
freeze[id] = false;
set_user_maxspeed(id, -1.0);
}
Miałem na odwrót - przez pierwsze 5 sekund z ekranem (podczas próby ruchu) nic się nie dzieje, a po tych 5 sekundach już się zaczyna trząść, z bronią jest nadal tak samo, czyli po zmianie broni prędkość zmienia się na normalną, bez względu na to, czy minęło 5 sekund, czy nie.
Przy okazji, kolejna funkcja, która odpowiada za ograniczenie prędkości gracza (speed150) do 150, po zmianie broni nie działa, lecz jeśli nie zmieniam broni to wszystko jest ok.
Ps. Napisz mi na PW (bądź też nie), jeśli chcesz IP mojego testowego serwera i zobaczyć jak to wygląda
dasiek
22.09.2012
Ekran się trzęsię jak ktoś chce się ruszyć (ponieważ wraca mu na poprzednie miejsce czy coś takiego:P) więc w funkcji zamrozenie musisz dodać CurWeapon(id) i powinno śmigać
AztekHQS 22.09.2012
Do zmiany prędkości gracza najlepiej użyć CmdStart
I lepiej zrobić to tak:
Użytkownik AztekHQS edytował ten post 22.09.2012 14:34
I lepiej zrobić to tak:
new freeze[33] = 0
register_forward(FM_CmdStart, "RealStartCMD")
public RealStartCMD(id, uc_handle, seed) {
if(is_user_alive(id) && is_user_connected(id)) {
if(freeze[id] == 1) set_user_maxspeed(id, 0.1)
else if(freeze[id] == 2) set_user_maxspeed(id, -1.0)
}
return FMRES_HANDLED
}
case 4: {
ColorChat(id, RED, "Nie mozesz sie ruszac przez 5 sekund!")
cs_set_user_money(id, (cs_get_user_money(id) - get_cvar_num("kasa_bonus")), 1)
freeze[id] = 1
set_task(5.0, "zamrozenie", id)
}
public zamrozenie(id) freeze[id] = 2
Użytkownik AztekHQS edytował ten post 22.09.2012 14:34
Filip1512
22.09.2012
new bool:freeze[33] = 0
A przypadkiem zmienna bool nie może przyjmować tylko 2 wartości - prawda/fałsz?
Użytkownik `NN edytował ten post 22.09.2012 14:34
AztekHQS 22.09.2012
Tak, poprawiłemA przypadkiem zmienna globalna nie może przyjmować tylko 2 wartości - prawda/fałsz?
Filip1512
22.09.2012
Ekran się trzęsię jak ktoś chce się ruszyć (ponieważ wraca mu na poprzednie miejsce czy coś takiego:P) więc w funkcji zamrozenie musisz dodać CurWeapon(id) i powinno śmigać
A jak to zrobić ?