Problem z dodaniem "ratio" do info...
.Etc
12.10.2013
Witam,
próbuje dodać do info w hud "Ratio" czyli K/D
Zrobiłem to tak:
#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
new hud_rgb, hud_x, hud_y, hud_effects,g_round = 1,maxplayers,hudsync
public plugin_init() {
register_plugin("Informator [PL]","1.2f","xakintosh")
hud_rgb = register_cvar( "srv_hud_rgb", "165 165 165" )
hud_x = register_cvar( "srv_hud_x", "0.55" )
hud_y = register_cvar( "srv_hud_y", "0.75" )
hud_effects = register_cvar( "srv_hud_effects", "1" )
hudsync = CreateHudSyncObj()
maxplayers = get_maxplayers()
set_task(0.1, "Fwd_StartFrame", 1, "", 0, "b")
register_forward(FM_StartFrame, "Fwd_StartFrame")
register_event("HLTV", "event_newround", "a", "1=0", "2=0")
}
public event_newround() {
g_round++
}
public Fwd_StartFrame(id) {
new timestring[31]
new Float:ratio
new deads = get_user_deaths(id);
new kills = get_user_frags(id);
ratio = kills % deads;
get_time("%H:%M:%S",timestring,8)
static Float:GameTime, Float:FramesPer = 0.0
static Float:Fps
GameTime = get_gametime()
if(FramesPer >= GameTime)
Fps += 1.0;
else {
FramesPer = FramesPer + 1.0
for( new id = 1; id <= maxplayers; id++ ) {
new ip[42],red, green, blue
new timeleft = get_timeleft()
get_hud_color(red, green, blue)
get_user_ip(0, ip, 31, 1)
set_hudmessage(red,green,blue,get_pcvar_float(hud_x),get_pcvar_float(hud_y),get_pcvar_num(hud_effects),0.3,1.0)
ShowSyncHudMsg(id,hudsync,"Godzina: %s | Serwer FPS: %.1f^n Fragi: %i | Zgony: %i | Ratio: %.1f",timestring,Fps,get_user_frags(id),get_user_deaths(id), ratio)
}
Fps = 0.0
}
}
get_hud_color(&r, &g, &b) {
new color[20]
static red[5], green[5], blue[5]
get_pcvar_string(hud_rgb, color, charsmax(color))
parse(color, red, charsmax(red), green, charsmax(green), blue, charsmax(blue))
r = str_to_num(red)
g = str_to_num(green)
b = str_to_num(blue)
}
ale po dodaniu
new Float:ratio
new deads = get_user_deaths(id);
new kills = get_user_frags(id);
ratio = kills % deads;
Nie wyświetla sie hud aż do pierwszego killa, i podaje błedne dane
Użytkownik kimiz edytował ten post 12.10.2013 17:07
Ogen Dogen
13.10.2013
Do działań na floacie służą odpowiednie funkcje np. floatadd
A tak poza tym % to dzielenie modulo a ty chyba potrzebujesz normalnego ?
Użytkownik Ogen Dogen edytował ten post 13.10.2013 00:06
Rivit
13.10.2013
Popatrz jak to jest rozwiązane w procentowym expie
.Etc
13.10.2013
Spróbowałem tak:
new deads = get_user_deaths(id); new kills = get_user_frags(id); new Float:ratio = 0.0; ratio = float(kills / deads);
ale dalej nie działa
L 10/13/2013 - 07:23:46: [AMXX] Run time error 11: divide L 10/13/2013 - 07:23:46: [AMXX] [0] informator.sma::Fwd_StartFrame (line 30)
.Etc
13.10.2013
Wciąż to samo, nawet jak usunąłem to z ShowSyncHudMsg , więc to nie od tego
GwynBleidD
14.10.2013
Pomyśl sobie co się dzieje, gdy gracz nie ma ani jednego killa? Przez co dzielisz? PRZEZ ZERO!!!
ratio = deads>0?float(kills / deads):kills>0?1.0:0.0;
Spróbuj takiego "mutanta".
.Etc
14.10.2013
Pomyśl sobie co się dzieje, gdy gracz nie ma ani jednego killa?
![]()
Teraz nie ma błędów w konsoli ani logów , pozostałe wyniki są dobrze ale teraz cały czas jest fragi: 0 zgony: 0 ratio: 0 ![]()
//
Edit:
Dałem zamiast kills / deads normalnie get_user_... i fragi / zgony czyta ale ratio dalej nie
Użytkownik kimiz edytował ten post 14.10.2013 21:18




