Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie

Jak sprawdzić czy gracz sam się zabił?


  • Zamknięty Temat jest zamknięty
21 odpowiedzi w tym temacie

#1 naven

    Hero

  • Power User

Reputacja: 204
Profesjonalista

  • Postów:1 088
  • GG:
  • Imię:Adam
  • Lokalizacja:Cieszyn
Offline

Napisano 19.08.2009 21:09

Witam, jak pobrać logevent z samobójstwa?
register_logevent("Samobojstwo", 2, "") //a dalej;p?

P.S.czym różni się
return 
PLUGIN_HANDLED;
od
return 
PLUGIN_CONTINUE;

  • +
  • -
  • 0

#2 Seba

    Wszechobecny

  • Zbanowany

Reputacja: 198
Profesjonalista

  • Postów:424
  • Lokalizacja:Internet
Offline

Napisano 20.08.2009 13:42

HANDLED blokuje wykonanie dalszej części kodu (np. jak dasz register_clcmd na say, i dasz na HANDLED to się chat nie pojawi, bo plugin zablokuje), CONTINUE - odwrotnie, nie rusza nic.

A co do śmierci, to via logevent można tak
register_logevent("killed_himself",3,"1=committed suicide with","2=world")


#3 naven

    Hero

  • Autor tematu
  • Power User

Reputacja: 204
Profesjonalista

  • Postów:1 088
  • GG:
  • Imię:Adam
  • Lokalizacja:Cieszyn
Offline

Napisano 20.08.2009 13:49

Więc po co jest PLUGIN_CONTINUE?

edit: seba, nie chodziło mi o samobójstwo używając kill, tylko jak spadasz i się zabijasz
  • +
  • -
  • 0

#4 Seba

    Wszechobecny

  • Zbanowany

Reputacja: 198
Profesjonalista

  • Postów:424
  • Lokalizacja:Internet
Offline

Napisano 20.08.2009 14:00

Bo czasami trzeba przerwać działanie funkcji, nie blokując całej wiadomości, np.

public funkcja(id)

{

	if(is_user_alive(id))

	{

		client_print(id, print_chat, "jestes zywy")

		return PLUGIN_CONTINUE

	}

	client_print(id, print_chat, "jestes niezywy")

	return PLUGIN_CONTINUE

}



public funkcja2(id)

{

	if(is_user_alive(id))

	{

		client_print(id, print_chat, "jestes zywy")

		return PLUGIN_CONTINUE

	}

	else 

	{

		client_print(id, print_chat, "jestes niezywy")

		return PLUGIN_CONTINUE

	}

	return PLUGIN_CONTINUE

}



public funkcja3(id)

{

	if(is_user_alive(id))

	{

		client_print(id, print_chat, "jestes zywy")

	}

	else 

	{

		client_print(id, print_chat, "jestes niezywy")

	}

	return PLUGIN_CONTINUE

}
wszystko tak samo działa.

#5 naven

    Hero

  • Autor tematu
  • Power User

Reputacja: 204
Profesjonalista

  • Postów:1 088
  • GG:
  • Imię:Adam
  • Lokalizacja:Cieszyn
Offline

Napisano 20.08.2009 14:02

public funkcja(id) 

{ 

    if(is_user_alive(id)) 

    { 

        client_print(id, print_chat, "jestes zywy") 

        return PLUGIN_CONTINUE //następny client_print się wykona? jak dam HANDLED to tutaj kończy się cała funkcja?

    } 

    client_print(id, print_chat, "jestes niezywy") 

    return PLUGIN_CONTINUE 

}

  • +
  • -
  • 0

#6 Seba

    Wszechobecny

  • Zbanowany

Reputacja: 198
Profesjonalista

  • Postów:424
  • Lokalizacja:Internet
Offline

Napisano 20.08.2009 14:12

Nie wykona się, gdyż zatrzymasz funkcje. Może dam przykład.

/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <amxmisc>

#define PLUGIN "Nowy Plugin"
#define VERSION "1.0"
#define AUTHOR "Sn!ff3r"


public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR)
	register_clcmd("say siema", "hello")
	// Add your code here...
}

public hello(id)
{
	if(is_user_alive(id))
	{
		client_print(id, print_chat, "Witaj, jestes zywy")
		return PLUGIN_CONTINUE
	}
	client_print(id, print_chat, "Witaj, jestes niezywy")
	return PLUGIN_CONTINUE 
	
}
Po napisaniu "Siema" wyświetli pierw witaj, jesteś xxx, a następnie słowo "siema" napisane przez gracza. Gdy będzie
/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <amxmisc>

#define PLUGIN "Nowy Plugin"
#define VERSION "1.0"
#define AUTHOR "Sn!ff3r"


public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR)
	register_clcmd("say siema", "hello")
	// Add your code here...
}

public hello(id)
{
	if(is_user_alive(id))
	{
		client_print(id, print_chat, "Witaj, jestes zywy")
		return PLUGIN_HANDLED
	}
	client_print(id, print_chat, "Witaj, jestes niezywy")
	return PLUGIN_HANDLED
	
}
pokaże się samo witaj, jestes xxx

#7 naven

    Hero

  • Autor tematu
  • Power User

Reputacja: 204
Profesjonalista

  • Postów:1 088
  • GG:
  • Imię:Adam
  • Lokalizacja:Cieszyn
Offline

Napisano 20.08.2009 14:34

Powiedzmy że rozumiem;p
Co do eventa to nie chodziło mi o samobójstwo używając kill, tylko jak spadasz i się zabijasz
  • +
  • -
  • 0

#8 Miczu

    Godlike

  • Przyjaciel

Reputacja: 657
Wszechmogący

  • Postów:2 862
Offline

Napisano 20.08.2009 15:11

register_event("DeathMsg", "DeathMsg", "a", "1=0")
  • +
  • -
  • 0

#9 naven

    Hero

  • Autor tematu
  • Power User

Reputacja: 204
Profesjonalista

  • Postów:1 088
  • GG:
  • Imię:Adam
  • Lokalizacja:Cieszyn
Offline

Napisano 20.08.2009 16:47

No ok, działa, ale jak kiedyś pisałeś:

Po sekundzie przestaje byc aktualny to nie wyrobisz sie z usunieciem go


Po 1s traci się, a ja potrzebuje, żeby trzymało się do następnej rundy i zabijało gracza, mam coś takiego:
/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <colorchat>

#define PLUGIN "ttkill"
#define VERSION "1.0"
#define AUTHOR "naven"


public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR)
	register_event("DeathMsg", "DeathMsg", "a", "1=0")
}
public DeathMsg(id){
	//if(cs_get_user_team(id) == CS_TEAM_T)
	//new imie [32]
	//get_user_name(id, imie, 31)
	//if (is_user_connected(id))
	ColorChat(0, GREEN, " zostaje zabity za samobojstwo w poprzedniej rundzie")
	set_task(1.0, "zabij", id)
}
public zabij(id){
	new name [32]
	get_user_name(id, name, 31)
	//if (is_user_connected(id))
	ColorChat(0, GREEN, "%s zostaje zabity za samobojstwo w poprzedniej rundzie", name)
	user_kill(id)
}

  • +
  • -
  • 0

#10 Miczu

    Godlike

  • Przyjaciel

Reputacja: 657
Wszechmogący

  • Postów:2 862
Offline

Napisano 20.08.2009 18:43

Skoro popelnil samobujstwo to po 1 sekundzie nadal jest martwy, to po co go zacijac :F

Zrob nowa tablice dla all graczy, a jak ktos popelni samobojstwo kill[id]=1

Potem w evencie nowej rundy sprawdzasz czy ktorys gracz jest zaznaczony do zabicia, jesli tak to go zabic i i wyzerowac zmienna (uwaga, zabijajac plugiem mozna miec wrazenie, ze popelnil sam sie zabil...).
  • +
  • -
  • 0

#11 naven

    Hero

  • Autor tematu
  • Power User

Reputacja: 204
Profesjonalista

  • Postów:1 088
  • GG:
  • Imię:Adam
  • Lokalizacja:Cieszyn
Offline

Napisano 20.08.2009 19:08

Miczu, ja go nie chciałem zabijać po 1s

Jak zrobić tablice? ;>
  • +
  • -
  • 0

#12 darkman

    Wszechwiedzący

  • Przyjaciel

Reputacja: 87
Zaawansowany

  • Postów:553
  • Lokalizacja:inactive
Offline

Napisano 20.08.2009 19:14

new tablica[ilość_elementów];

  • +
  • -
  • 0

#13 Seba

    Wszechobecny

  • Zbanowany

Reputacja: 198
Profesjonalista

  • Postów:424
  • Lokalizacja:Internet
Offline

Napisano 20.08.2009 19:31

new Array:tablica;
:P

#14 darkman

    Wszechwiedzący

  • Przyjaciel

Reputacja: 87
Zaawansowany

  • Postów:553
  • Lokalizacja:inactive
Offline

Napisano 20.08.2009 19:43

new Array:tablica;
:P


daj mu spokój na początek z dynamicznymi tablicami :>
  • +
  • -
  • 0

#15 Seba

    Wszechobecny

  • Zbanowany

Reputacja: 198
Profesjonalista

  • Postów:424
  • Lokalizacja:Internet
Offline

Napisano 20.08.2009 19:49

daj mu spokój na początek z dynamicznymi tablicami :>

Ale w sumie to tylko wskaźnik, bo tablica nie została jeszcze utworzona.

#16 R3X

    Godlike

  • Przyjaciel

Reputacja: 2 987
Godlike

  • Postów:4 248
  • Lokalizacja:Nie
Offline

Napisano 20.08.2009 22:19

Ale w sumie to tylko wskaźnik, bo tablica nie została jeszcze utworzona.

Bez przesady ;> , zwykła 33-elementowa tablica bool: czy _: jest tu wystarczająca.
  • +
  • -
  • 0

#17 kyku

    Wszechmogący

  • Użytkownik

Reputacja: 166
Profesjonalista

  • Postów:612
  • Lokalizacja:Jasło
Offline

Napisano 21.08.2009 14:04

new kill[33];

tam gdzie sie zabil dajesz
kill[id] = 1;

i w evencie odpowiadajacym za respawn
if(kill[id]){
user_kill(id);
kill[id] = 0;
}
  • +
  • -
  • 0

#18 naven

    Hero

  • Autor tematu
  • Power User

Reputacja: 204
Profesjonalista

  • Postów:1 088
  • GG:
  • Imię:Adam
  • Lokalizacja:Cieszyn
Offline

Napisano 21.08.2009 15:40

Doszliśmy już do tego, że to się będzie zapętlać...
  • +
  • -
  • 0

#19 R3X

    Godlike

  • Przyjaciel

Reputacja: 2 987
Godlike

  • Postów:4 248
  • Lokalizacja:Nie
Offline

Napisano 21.08.2009 18:29

#include <amxmodx>
#include <celltrie>
#include <hamsandwich>
#include <cstrike>
#include <colorchat>

#define PLUGIN "ttkill"
#define VERSION "1.02"
#define AUTHOR "naven"

#define TASK_ID 12345

new const gszValidWeapons[][]={
	"grenade",
	"tank",
	"vehicle"
}
new Trie:TrieWeaponNames;

new bool:gbUser2Kill[33];

public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR);
	register_event("DeathMsg", "DeathMsg", "a");
	RegisterHam(Ham_Spawn, "player", "fwSpawn", 1);
    
	TrieWeaponNames = TrieCreate();
	for(new i=0;i<sizeof gszValidWeapons;i++)
		TrieSetCell(TrieWeaponNames,gszValidWeapons[i],i);
}
public fwSpawn(id){
	if(gbUser2Kill[id])
		set_task(0.2, "zabij",id+TASK_ID);
}
public DeathMsg(){
	new kid=read_data(1);
	new id=read_data(2);
	new szWeapon[8];
	read_data(4, szWeapon, 7);

	if((TrieKeyExists(TrieWeaponNames, szWeapon) && kid==id) || kid==0)
		if(!gbUser2Kill[id] && cs_get_user_team(id) == CS_TEAM_T)
			gbUser2Kill[id]=true;
}
public zabij(id){
	id-=TASK_ID;
	
	user_kill(id);
	
	new name [32]
	get_user_name(id, name, 31)
	ColorChat(0, RED, "^x01Gracz^x03 %s^x01 zostaje ukarany za^x04 samobojstwo^x01 w poprzedniej rundzie", name)
   
	gbUser2Kill[id]=false;
}

new const gszValidWeapons[][]={
    "grenade",
    "tank",
    "vehicle"
}
Tutaj możesz wpisać wszystkie nazwy broni, które uznawane są jako samobójstwo.
  • +
  • -
  • 0

#20 naven

    Hero

  • Autor tematu
  • Power User

Reputacja: 204
Profesjonalista

  • Postów:1 088
  • GG:
  • Imię:Adam
  • Lokalizacja:Cieszyn
Offline

Napisano 21.08.2009 19:41

Działa dzięki, dla zainteresowanych wersja multilingual:
edit: multilingual nie działa sry;p

Załączone pliki

  • Załączony plik  ttkill.txt   189 bajtów  46 Ilość pobrań

  • +
  • -
  • 0




Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych