Page 1 of 1

Funkcija

Posted: 2011 Oct 17 17:04
by bussinessman
Sveiki, bandau padaryti paprastą funkciją, kad nustatyti greitį ir nesigauna nieko...

Code: Select all

 set_task(2.0, "setSpeed", 0, "-1.0"); public setSpeed(speed){    new players[32], num;    get_players(players, num, "ac");     for (new i=1; i<=num+1; i++) {        set_user_maxspeed(i, float(speed));    }} 
Žinau, kad turi būti ne float, taigi kaip tai padaryti?

Re: Funkcija

Posted: 2011 Oct 17 18:10
by hleV
Daryk taip:

Code: Select all

#include <amxmodx>#include <fun>#include <hamsandwich> new bool:Frozen; public plugin_init()    RegisterHam(Ham_Item_PreFrame, "player", "OnResetMaxSpeed", 1); public OnResetMaxSpeed(id)    if (Frozen)        set_user_maxspeed(id, -1.0); Freeze(){    Frozen = true;     new players[32], n;    get_players(players, n, "ac");     for (new i; i < n; i++)        set_user_maxspeed(players[i], -1.0);} Unfreeze(){    Frozen = false;     new players[32], n;    get_players(players, n, "ac");     for (new i; i < n; i++)        ExecuteHamB(Ham_Item_PreFrame, players[i]);}

Code: Select all

Freeze(); // Nustato visu greiti i -1.0Unfreeze(); // Atstato visu greiti i normalu
Netestavau.

Re: Funkcija

Posted: 2011 Oct 17 20:29
by bussinessman
Iki tavo atsakymo panašiai padariau:

Code: Select all

 public setSpeed(){    new players[32], num;    get_players(players, num, "ac");     for (new i=1; i<=num+1; i++) {                set_user_maxspeed(i, 500.0);    }} public resetSpeed(){    new players[32], num;    get_players(players, num, "ac");     for (new i=1; i<=num+1; i++) {                set_user_maxspeed(i, -1.0);    }} 
Gal numanote kodėl -1.0 nenustato default greičio, o visiškai sustabdo žmogų?

Re: Funkcija

Posted: 2011 Oct 17 21:46
by hleV
Nes taip veikia set_user_maxspeed().
Ir tavo kodas neteisingas visiškai.

Re: Funkcija

Posted: 2011 Oct 18 22:20
by bussinessman
Nesuprantu kas būtent negerai?

Re: Funkcija

Posted: 2011 Oct 19 00:26
by aaarnas

Code: Select all

for (new i=1; i<=num+1; i++) {
---->>>

Code: Select all

for (new i=0; i<num; i++) {

Code: Select all

set_user_maxspeed(i, 500.0);
---->>>

Code: Select all

set_user_maxspeed(players[i], 500/800);

Re: Funkcija

Posted: 2011 Oct 19 10:03
by hleV
Greičio atstatymui naudok mano pateiktą ExecuteHamB() metodą, nes set_user_speed() su argumentu -1.0 žaidėją sustabdys. Taip pat žaidėjams pasikeitus ginklą jų greitis atsistatys, todėl ir daviau pavyzdį su Ham_Item_PreFrame, kuriame iš naujo nustatai žaidėjo greitį, šiam netikėtai atsistačius į normalų.

Visa tai galioja tik CS. Jei darai tai kitam žaidimui, šitai neveiks.

Re: Funkcija

Posted: 2011 Oct 21 19:48
by bussinessman
Gerai, kodėl negalima tiesiog i, o reikia players?

Re: Funkcija

Posted: 2011 Oct 21 21:36
by newb
Nes i bus 1,2,3... O playeriu id dazniausei buna kazkas panausaus i 1,6,7,8,10...
Tai tas players ir saugo teisingus id.