←  Problemy

AMXX.pl: Support AMX Mod X i SourceMod

»

Problem z dodaniem "ratio" do info...

.Etc - zdjęcie .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
Odpowiedz

  • +
  • -
Rivit - zdjęcie Rivit 12.10.2013

A moze tam gdzie ratio daj %0.1f%%

lub

0.1f%%

Odpowiedz

  • +
  • -
Ogen Dogen - zdjęcie 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
Odpowiedz

  • +
  • -
Rivit - zdjęcie Rivit 13.10.2013

Popatrz jak to jest rozwiązane w procentowym expie

http://darkgl.amxx.p...procentowy-exp/

Odpowiedz

.Etc - zdjęcie .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)


Odpowiedz

  • +
  • -
Rivit - zdjęcie Rivit 13.10.2013

show hudmessage edytuj tez. Popatrz jak to zrobil DarkGL.

%0.1f%%
Odpowiedz

.Etc - zdjęcie .Etc 13.10.2013

Wciąż to samo, nawet jak usunąłem  to z ShowSyncHudMsg , więc to nie od tego

Odpowiedz

  • +
  • -
GwynBleidD - zdjęcie 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".

Odpowiedz

.Etc - zdjęcie .Etc 14.10.2013


Pomyśl sobie co się dzieje, gdy gracz nie ma ani jednego killa?

:facepalm: :facepalm2:

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
Odpowiedz