←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

Sys. Pkt.

Zablokowany

Screeaam... - zdjęcie Screeaam... 16.06.2010

Witam, robie dla siebie plugin i chciałbym się dowiedzieć, jak zrobić jakiś system punktowy, że gracz zabija gracza, dostaje np. 2 pkt, żeby dało się je sprawdzić komendą /pkt i żeby się wyświetlały w HUD. Pomoże ktoś? Chciałbym tylko wiedzieć jak je przechować na jedną mapę.
Odpowiedz

  • +
  • -
grankee - zdjęcie grankee 16.06.2010

zmienna globalna
new punkty[33]

i w odpowienim miejscu w kodzie (po odpowiednim zdarzeniu)
punkty[id]+=ilosc_punktow_do_dodania


Natomiast co do wyświetlania to
public plugin_init(){
register_clcmd("say /pkt","pkt")
}
public pkt(id)
{
client_print(id,print_center,"Masz %d punktow",punkty[id])
return PLUGIN_HANDLED
}
public client_connect(id)
{
punkty[id]=0
return PLUGIN_HANDLED
}

Użytkownik grankee edytował ten post 16.06.2010 09:10
Odpowiedz

Screeaam... - zdjęcie Screeaam... 16.06.2010

Takie coś:
#include <amxmodx>
#include <cstrike>
#include <csx>

#define AUTHOR "Screeaam.."
#define PLUGIN "Cos"
#define VERSION "1.0"

new punkty[33]


public plugin_init(){
     register_plugin(AUTHOR, VERSION, PLUGIN)
     register_event("DeathMsg","DeathMsg","ade")
}

public DeathMsg(id)
{
	new weaponname[20]
	new kid = read_data(1)
	new vid = read_data(2)
	new headshot = read_data(3)
	read_data(4,weaponname,31)



	if (is_user_connected(kid) && is_user_connected(vid) && get_user_team(kid) != get_user_team(vid))
	{
		if (kid == 1){
                punkty[id] += 2
                }
	}
}

Będzie działać?
Odpowiedz

  • +
  • -
grankee - zdjęcie grankee 16.06.2010

if (kid == 1){
punkty[id] += 2
}


Jeżeli id zabójcy równe jest 1 to dodaj mu punkty.
Tak to teraz będzie działało, zakładając, że dobrze są read_data()
Moim zdaniem jest niepotrzebny tu ten warunek czyli daj po prostu

#include <amxmodx>
#include <cstrike>
#include <csx>

#define AUTHOR "Screeaam.."
#define PLUGIN "Cos"
#define VERSION "1.0"

new punkty[33]


public plugin_init(){
register_plugin(AUTHOR, VERSION, PLUGIN)
register_event("DeathMsg","DeathMsg","ade")
}

public DeathMsg(id)
{
new weaponname[20]
new kid = read_data(1)
new vid = read_data(2)
new headshot = read_data(3)
read_data(4,weaponname,31)



if (is_user_connected(kid) && is_user_connected(vid) && get_user_team(kid) != get_user_team(vid))
{
punkty[id] += 2
}
}

Odpowiedz

  • +
  • -
G[o]Q - zdjęcie G[o]Q 16.06.2010

Tutoriale są po to żeby je czytać w moim tutku o nvault dałem przykładowy program który zapisuje fragi po zmianie mapy więc wystarczy zmodyfikować go troszku :)
Odpowiedz

  • +
  • -
Knopers - zdjęcie Knopers 16.06.2010

public DeathMsg(id) 

...

punkty[id] += 2


Coś chyba skopaliście :D
Odpowiedz

  • +
  • -
SSB - zdjęcie SSB 16.06.2010

Ano, chyba powinno być
punkty[id]++;

Czy nei mam racji? :D
Odpowiedz

  • +
  • -
Knopers - zdjęcie Knopers 16.06.2010

nie, pkt o ile się nie mylę powinny być przypisywane dla killera czyli kid on dal id które jest 1 argumentem funkcji a co za tym idzie 0 argumentem eventu to nawet nie jest id gracza
Odpowiedz

  • +
  • -
sbstn - zdjęcie sbstn 16.06.2010

Po co w ogóle id w tym evencie?

public DeathMsg(id)


Coś takiego:

#include <amxmodx>
#include <cstrike>

new punkty[33]

public plugin_init()
{
register_event("DeathMsg","DeathMsg","a")
}

public DeathMsg()
{
new kid = read_data(1)
new vid = read_data(2)

if (is_user_connected(kid) && is_user_connected(vid) && get_user_team(kid) != get_user_team(vid))
{
punkty[kid] += 2
}
}
Odpowiedz
Zablokowany