Ustawienie danej szybkosci po zmianie broni
Drewno. 14.01.2011
Zauważyłem w diablomodzie,że jest bug,że szybkość odpowiednią zmieni,dopiero,gdy zmieni się broń,przedstawię wam łatkę,dzięki której bedziemy miec dana predkosc,bez zmiany broni
W public client_PreThink ( id )
pod:
dodaj:
Teraz nie musisz zmieniac broni,zeby miec dana szybkosc...tylko,jak masz freeze time na serwerze,to po tym czasie szybkosc dziala po 1-2 sekundach;)Padło w tym temacie pytanie,że przez to nie będzie działać moc ninjy,to podaje na to sposób
w gdzieś public RoundStart(){
w public set_speedchange(id)
pod:
dodaj:
w public call_cast(id)
to:
zamien na:
Użytkownik PedoBear. edytował ten post 16.01.2011 18:10
W public client_PreThink ( id )
pod:
else
{
if(casting[id]==1)
{
message_begin( MSG_ONE, gmsgBartimer, {0,0,0}, id )
write_byte( 0 )
write_byte( 0 )
message_end()
}
casting[id]=0
}
dodaj:
if (is_user_connected(id) && is_user_alive(id))
{
set_speedchange(id)
}
Teraz nie musisz zmieniac broni,zeby miec dana szybkosc...tylko,jak masz freeze time na serwerze,to po tym czasie szybkosc dziala po 1-2 sekundach;)Padło w tym temacie pytanie,że przez to nie będzie działać moc ninjy,to podaje na to sposób
new x_speed[33] = 1
w gdzieś public RoundStart(){
x_speed[i]=0
w public set_speedchange(id)
pod:
set_user_maxspeed(id, agi + speeds)
dodaj:
if (x_speed[id] > 0) set_user_maxspeed(id, agi + speeds + x_speed[id])
w public call_cast(id)
to:
case Ninja:
{
show_hudmessage(id, "Zwiekszyles sobie tymczasowo predkosc")
set_user_maxspeed(id,get_user_maxspeed(id)+50.0)
}
zamien na:
case Ninja:
{
show_hudmessage(id, "Zwiekszyles sobie tymczasowo predkosc")
x_speed[id] = 50
}
Użytkownik PedoBear. edytował ten post 16.01.2011 18:10
sebul
14.01.2011
Ale zauważ, że ninja ma taką moc na nożu, że na chwile zwiększa swoją prędkość, a ta chwila to właśnie na czas dopóki nie zmieni broni. Oczywiście można zastosować ten "fix", ale wtedy trzeba albo dać inną moc ninji (bo po co moc, która będzie od razu przestawać działać), albo dodać tą moc na prędkość inaczej.
Użytkownik sebul edytował ten post 14.01.2011 16:15
Użytkownik sebul edytował ten post 14.01.2011 16:15
Drewno. 14.01.2011
to trzeba zrobić nową zmienną,coś jak player_b_speed[id] i przypisać ją ninjy w public call_cast(id)
sebul
14.01.2011
Ja wiem, ale ktoś sobie doda to co napisałeś i potem będzie się dopytywał czemu nie działa mu moc na nożu ninji ;]to trzeba zrobić nową zmienną,coś jak player_b_speed[id] i przypisać ją ninjy w public call_cast(id)
Drewno. 16.01.2011
już dodałem jak zmienić moc ninjy,aby działała,zmienna x_speed też teraz będzie przydatna jako dodatek do /rune jako np. "Mikstura przyśpieszająca"Edytowałem ten temat,bo zrobiłem drobną optymalizację tego kodu.
Użytkownik PedoBear. edytował ten post 16.01.2011 11:03
Użytkownik PedoBear. edytował ten post 16.01.2011 11:03
GoldeN 18.01.2011
Super mi optymalizacja, aby plugin co 60-70 razy na sekundę ustawiał szybkość. ;x Już moim zdaniem lepsze by było puścić taska jedno-sekundowego od RoundStart i raz w nim wywołać to. (O ile się nie mylę też by tak działało)
sebul
18.01.2011
A no też fakt.Super mi optymalizacja, aby plugin co 60-70 razy na sekundę ustawiał szybkość.
Wydaje mi się, że można by to zrobić na tej samej zasadzie co leczenie co 5 sek. Czyli podJuż moim zdaniem lepsze by było puścić taska jedno-sekundowego od RoundStart i raz w nim wywołać to. (O ile się nie mylę też by tak działało)
set_task(5.0, "Timed_Healing", 0, "", 0, "b")
trzeba dodać
set_task(3.0, "ustaw_predkosc", 0, "", 0, "b")
i przed
public set_speedchange(id) {
dodać
public ustaw_predkosc() {
for(new i=1; i<=32; i++) if(is_user_alive(i)) set_speedchange(i);
}
Użytkownik sebul edytował ten post 18.01.2011 19:21
GoldeN 24.01.2011
@Up
Albo zamiast wywoływać taska w plugin_init wywołać go w jakimś evencie startu rundy, np sekundę po starcie rundy wywołać ustawienie prędkości i tyle, czyli task tylko raz przy starcie rundy.
Użytkownik GoldeN edytował ten post 24.01.2011 22:38
Albo zamiast wywoływać taska w plugin_init wywołać go w jakimś evencie startu rundy, np sekundę po starcie rundy wywołać ustawienie prędkości i tyle, czyli task tylko raz przy starcie rundy.
Użytkownik GoldeN edytował ten post 24.01.2011 22:38
sebul
24.01.2011
No tak też można, ale myślę, że te rozwiązanie z tym taskiem w plugin_init nie jest takie złe (na pewno lepszy niż wykonywanie tego w "client_PreThink"), a tym bardziej, że u mnie funkcja ze zmianą prędkości zajmuje tylko 363 znaków (po znacznym przerobieniu), więc dużo do wykonania nie jest. No ale jak już zostało to wspomniane, to napiszę jak zrobić to z tym taskiem w "RoundStart".
Znajdź
dodaj pod
następnie znajdź
i dodaj przed
Użytkownik sebul edytował ten post 04.05.2011 17:47
Znajdź
public RoundStart(){
for (new i=0; i < 33; i++){
dodaj pod
set_task(get_cvar_float("diablo_klass_delay")+0.1, "ustaw_predkosc", i);
następnie znajdź
public set_speedchange(id) {
i dodaj przed
public ustaw_predkosc(id) {
if(is_user_alive(id)) set_speedchange(id);
}
Użytkownik sebul edytował ten post 04.05.2011 17:47
GoldeN 25.01.2011
Ja nie mówię, że jest źle, bo przy moim ustawieniu, byłoby dobre:
Ale w prethinku zlagowałoby prawdopodobnie serwer.
public set_speedchange(id)
{
if(DemageTake[id]==1) agi=(BASE_SPEED / 2)
else agi=BASE_SPEED
if (is_user_connected(id) && freeze_ended)
{
new speeds = race_speed[player_class[id]] + floatround(player_dextery[id]*1.1)
set_user_maxspeed(id, agi + speeds)
}
}
Ale w prethinku zlagowałoby prawdopodobnie serwer.
Pawlo^^
26.01.2011
Mógłby ktoś napisać jeszcze raz, tylko razem z ninją? Działa mi ta opcja pod healingiem, tylko wtedy buguje ninje. Próbowałem połączyć to z częścią drugą autora, ale nie dało się wtedy skompilować.
::Gogiel::
18.04.2011
Sebul to daj kod od siebie jeżeli chce Ci się
Bo twoje kody są niezawodne
Bo twoje kody są niezawodne
Kapucha112
05.11.2011
Ustawianie taska z flagą "b" (infinite) powoduje większe zużycie CPU niż w przypadku zrobienia tego w PreThinku.
Mimo wszystko PreThink nie powinien być używany do ustawiania prędkości gracza.
Proponuję Ham_Item_PreFrame albo CurWeapon - są to najbardziej efektywne metody ustawiania prędkości.
Mimo wszystko PreThink nie powinien być używany do ustawiania prędkości gracza.
Proponuję Ham_Item_PreFrame albo CurWeapon - są to najbardziej efektywne metody ustawiania prędkości.