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

[ROZWIĄZANE] W momencie restartu rundy, zmienna gRound nie jest równa zeru.


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

#1 IntelCom

    Wszechwiedzący

  • Power User

Reputacja: 100
Zaawansowany

  • Postów:500
  • GG:
  • Imię:Dawid
  • Lokalizacja:Opole
Offline

Napisano 26.01.2015 14:27

Witam,

 

Otóż mam taki problem z VIP'em, który został wygenerowany w VIP generatorze.A mianowicie jest dodany logevent, związany z restartem serwera, mimo to podczas jego wystąpienia zmienna gRound nie jest równa 0.

 

Żeby było Wam łatwiej to dodam fragment kodu, który powinien wystarczyć.

public plugin_init(){
	register_plugin("VIP Ultimate", "12.3.0.2", "benio101 & speedkill");
	RegisterHam(Ham_Spawn, "player", "SpawnedEventPre", 1);
	register_event("HLTV", "event_new_round", "a", "1=0", "2=0");
	register_logevent("GameCommencing", 2, "1=Game_Commencing");
 
	register_clcmd("say /vip", "ShowMotd");
	set_task(30.0, "ShowAdv",.flags = "b");
 
	register_event("DeathMsg", "DeathMsg", "a");
	register_message(get_user_msgid("ScoreAttrib"), "VipStatus");
	g_Array=ArrayCreate(64,32);
	for(new i;i<sizeof g_Langcmd;i++){
		register_clcmd(g_Langcmd[i], "ShowVips");
	}
	register_clcmd("say_team", "VipChat");
}
public client_authorized(id){
	if(get_user_flags(id) & 524288){
		client_authorized_vip(id);
	}
}
public client_authorized_vip(id){
	g_Vip[id]=true;
	new g_Name[64];
	get_user_name(id,g_Name,charsmax(g_Name));
 
	new g_Size = ArraySize(g_Array);
	new szName[64];
 
	for(new i = 0; i < g_Size; i++){
		ArrayGetString(g_Array, i, szName, charsmax(szName));
 
		if(equal(g_Name, szName)){
			return 0;
		}
	}
	ArrayPushString(g_Array,g_Name);
 
	return PLUGIN_CONTINUE;
}
public client_disconnect(id){
	if(g_Vip[id]){
		client_disconnect_vip(id);
	}
}
public client_disconnect_vip(id){
	g_Vip[id]=false;
	new Name[64];
	get_user_name(id,Name,charsmax(Name));
 
	new g_Size = ArraySize(g_Array);
	new g_Name[64];
 
	for(new i = 0; i < g_Size; i++){
		ArrayGetString(g_Array, i, g_Name, charsmax(g_Name));
 
		if(equal(g_Name,Name)){
			ArrayDeleteItem(g_Array,i);
			break;
		}
	}
}
public SpawnedEventPre(id){
	if(g_Vip[id]){
		if(is_user_alive(id)){
			SpawnedEventPreVip(id);
		}
	}
}
public SpawnedEventPreVip(id){
	cs_set_user_armor(id, min(cs_get_user_armor(id,armortype)+100, 100), armortype);
	new henum=(user_has_weapon(id,CSW_HEGRENADE)?cs_get_user_bpammo(id,CSW_HEGRENADE):0);
	give_item(id, "weapon_hegrenade");
	++henum;
	show_vip_menu(id);
	if(gRound<=3){
		new fbnum=(user_has_weapon(id,CSW_FLASHBANG)?cs_get_user_bpammo(id,CSW_FLASHBANG):0);
		give_item(id, "weapon_flashbang");
		++fbnum;
		cs_set_user_bpammo(id, CSW_FLASHBANG, 2);
		new sgnum=(user_has_weapon(id,CSW_SMOKEGRENADE)?cs_get_user_bpammo(id,CSW_SMOKEGRENADE):0);
		give_item(id, "weapon_smokegrenade");
		++sgnum;
	}
	if(get_user_team(id)==2){
		give_item(id, "item_thighpack");
	}
}
public show_vip_menu(id){
	if(gRound>=2){
		new menu = menu_create("\yMenu broni VIP'a:", "menu_broni");
		menu_additem(menu, "\wM4A1 + Deagle", "1", 0)
		menu_additem(menu, "\wAk47 + Deagle", "2", 0)
 
		menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
 
		menu_display(id, menu, 0);
	}   
} 
public menu_broni(id, menu, item){
	if (item == MENU_EXIT)
	{
		menu_destroy(menu);
		return PLUGIN_HANDLED;
	}
	new data[6], iName[64];
	new zaccess, callback;
	menu_item_getinfo(menu, item, zaccess, data,5, iName, 64, callback);
	new key = str_to_num(data)
 
	switch(key)
	{
	case 1:
		{
			StripWeapons(id, Secondary);
			give_item(id, "weapon_deagle");
			give_item(id, "ammo_50ae");
			weapon_id=find_ent_by_owner(-1, "weapon_deagle", id);
			if(weapon_id)cs_set_weapon_ammo(weapon_id, 7);
			cs_set_user_bpammo(id, CSW_DEAGLE, 35);
			StripWeapons(id, Primary);
			give_item(id, "weapon_m4a1");
			give_item(id, "ammo_556nato");
			weapon_id=find_ent_by_owner(-1, "weapon_m4a1", id);
			if(weapon_id)cs_set_weapon_ammo(weapon_id, 30);
			cs_set_user_bpammo(id, CSW_M4A1, 90);
		}
	case 2:
		{
			StripWeapons(id, Secondary);
			give_item(id, "weapon_deagle");
			give_item(id, "ammo_50ae");
			weapon_id=find_ent_by_owner(-1, "weapon_deagle", id);
			if(weapon_id)cs_set_weapon_ammo(weapon_id, 7);
			cs_set_user_bpammo(id, CSW_DEAGLE, 35);
			StripWeapons(id, Primary);
			give_item(id, "weapon_ak47");
			give_item(id, "ammo_762nato");
			weapon_id=find_ent_by_owner(-1, "weapon_ak47", id);
			if(weapon_id)cs_set_weapon_ammo(weapon_id, 30);
			cs_set_user_bpammo(id, CSW_AK47, 90);
		}
	}
	menu_destroy(menu);
	return PLUGIN_HANDLED;
}
public event_new_round(){
	++gRound;
}
public GameCommencing(){
	gRound=0;
}

Po restarcie rundy menu się pojawia, a nie powinno (dopiero od 3 rundy).


  • +
  • -
  • 0

#2 Dziobak?

    Wszechmogący

  • Power User

Reputacja: 271
Wszechwidzący

  • Postów:645
  • GG:
  • Steam:steam
  • Imię:Michał
  • Lokalizacja:Radom
Offline

Napisano 26.01.2015 16:26

Jeżeli nie powinno to chyba to:

show_vip_menu(id);

powinno być w:

if(gRound<=3){

  • +
  • -
  • 0

#3 IntelCom

    Wszechwiedzący

  • Autor tematu
  • Power User

Reputacja: 100
Zaawansowany

  • Postów:500
  • GG:
  • Imię:Dawid
  • Lokalizacja:Opole
Offline

Napisano 27.01.2015 15:31


if(gRound<=3){

 

Nie rozumiem.Przecież wtedy menu pojawi się w 4 pierwszych rundach, a w kolejnych już nie.

 

gRound=0    I runda

gRound=1    II runda

gRound=2    III runda

gRound=3    IV runda

 

W której funkcji miałbym to zastosować?Tutaj?

public show_vip_menu(id){

  • +
  • -
  • 0

#4 psilocybe

    Toasty!

  • Power User

Reputacja: 252
Wszechwidzący

  • Postów:524
  • Steam:steam
  • Imię:Filip
  • Lokalizacja:PL
Offline

Napisano 27.01.2015 16:54

IntelCom, zdaje się że dobrze miałeś ten warunek dodany.

 

 

Po prostu zamień:

register_logevent("GameCommencing", 2, "1=Game_Commencing");

na:

register_event("TextMsg", "Runda_Restart", "a", "2&#Game_C", "2&#Game_w");

No i nazwę funkcji z GameCommencing na Runda_Restart, zauważ że poprzedni event nie łapał Ci restartu np. poprzez "sv_restart"


  • +
  • -
  • 1

Dołączona grafika

Dołączona grafika


#5 IntelCom

    Wszechwiedzący

  • Autor tematu
  • Power User

Reputacja: 100
Zaawansowany

  • Postów:500
  • GG:
  • Imię:Dawid
  • Lokalizacja:Opole
Offline

Napisano 27.01.2015 17:21

Dzięki, pomogło ;)

 

Ale mam jeszcze jeden problem z tym związany.

 

Po restarcie rundy po przez amxmodmenu, menu broni VIP'a pojawia się w 2 rundzie, a powinno w 3.

 

Jak to najprościej naprawić?

 

 


  • +
  • -
  • 0

#6 psilocybe

    Toasty!

  • Power User

Reputacja: 252
Wszechwidzący

  • Postów:524
  • Steam:steam
  • Imię:Filip
  • Lokalizacja:PL
Offline

Napisano 27.01.2015 17:56

No sam dodałeś warunek że jeżeli gRound jest większe lub równe 2 to ma się pokazać :D

 

Zamień

if(gRound>=2)

na

if(gRound>2)

:D


  • +
  • -
  • 0

Dołączona grafika

Dołączona grafika


#7 IntelCom

    Wszechwiedzący

  • Autor tematu
  • Power User

Reputacja: 100
Zaawansowany

  • Postów:500
  • GG:
  • Imię:Dawid
  • Lokalizacja:Opole
Offline

Napisano 27.01.2015 18:03

Przecież wtedy menu broni VIP'a pojawi się dopiero w 4 rundzie.Tego nie chce.

 

Ma być od 3 i tak w tej chwili jest.

 

Jednak gdy zrobię restart rundy z poziomu amxmodxmenu, to w 1 rundzie menu nie ma (czyli jest ok), ale już w 2 rundzie się pojawia (czyli jest źle).Powinno być od 3 rundy.

 

Bez restartu działa normalnie, menu jest od 3 rundy.


  • +
  • -
  • 0

#8 psilocybe

    Toasty!

  • Power User

Reputacja: 252
Wszechwidzący

  • Postów:524
  • Steam:steam
  • Imię:Filip
  • Lokalizacja:PL
Offline

Napisano 27.01.2015 18:17

Jak w czwartej? Widocznie coś pomieszałeś.

 

Twierdzisz że 3 nie jest większe od 2 ? :D

 

Daj sobie print w konsole, w event_new_round, niech Ci pokaże wartość gRound na początku każdej rundy :) Wychodzi na to że pierwsza runda u Ciebie to 0, powinno być 1, nie ważne czy po zmianie mapy, czy restarcie z amxmodmenu.


  • +
  • -
  • 0

Dołączona grafika

Dołączona grafika


#9 IntelCom

    Wszechwiedzący

  • Autor tematu
  • Power User

Reputacja: 100
Zaawansowany

  • Postów:500
  • GG:
  • Imię:Dawid
  • Lokalizacja:Opole
Offline

Napisano 27.01.2015 19:30

Tak, do zmiennej globalnej mam przypisaną wartość 0.

gRound=0

Więc menu pokazuje się od 3 rundy, ale po zrobieniu restartu rundy od 2 rundy.

f(gRound>=0)

I co jeżeli zmienie wartość zmiennej globalnej na 1 i dam poniższy warunek to będzie dobrze?

if(gRound>2)
  • +
  • -
  • 0

#10 GwynBleidD

    Godlike

  • Przyjaciel

Reputacja: 1 869
Godlike

  • Postów:3 066
  • Steam:steam
  • Lokalizacja:Przemyśl
Offline

Napisano 27.01.2015 20:31

Po 1. zmień na > tak jak kolega mówi.

Po 2. W pierwszej rundzie na mapie event HLTV się nie wykonuje, jednak po restarcie i game_connecting już tak. Co oznacza, że na pierwszej rundzie na mapie licznik rund masz ustawiony na 0, a na rundzie po restarcie na 1.

Ustaw więc na początku licznik na 1 i wtedy wszystko będzie się otwierać w tej rundzie, w której powinno.
  • +
  • -
  • 1

NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
 
1988650.png?theme=dark


#11 IntelCom

    Wszechwiedzący

  • Autor tematu
  • Power User

Reputacja: 100
Zaawansowany

  • Postów:500
  • GG:
  • Imię:Dawid
  • Lokalizacja:Opole
Offline

Napisano 27.01.2015 20:47

dziękuję za pomoc.

~close~
  • +
  • -
  • 0

#12 radim

    Godlike

  • Moderator

Reputacja: 939
Master

  • Postów:2 725
  • Steam:steam
  • Imię:Arkadiusz
  • Lokalizacja:Janów Lub.
Offline

Napisano 27.01.2015 22:12

Wiadomość wygenerowana automatycznie


Ten temat został zamknięty przez moderatora.

Powód: Pomoc udzielona

Jeśli się z tym nie zgadzasz, report.png raportuj ten post, a moderator lub administrator rozpatrzy go ponownie.


Z pozdrowieniami,
Zespół AMXX.PL
  • +
  • -
  • 0

Chcąc napisać do mnie prywatną wiadomość, wpierw zapoznaj się ze stroną "O mnie" w moim profilu użytkownika [ radim ] !





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

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