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] Plugin anty-camp zombie


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

#1 Sizar32

    Początkujący

  • Użytkownik

Reputacja: 0
Nowy

  • Postów:10
  • Imię:Czarek
  • Lokalizacja:Podlaskie
Offline

Napisano 25.06.2012 20:46

Witam. Chciałem zrobić plugin który zmuszałby graczy do aktywnej gry zombie. Założenie było takie jezeli gracz nie atakuje lub nie jest atakowany po 60sec dostaje slay. Plugin do który podam nizej kod niby dziala ale jest problem ponieważ zarazenie czlowieka przez zombie nie wplywa na zerowanie, i na nowo odliczanie czasu do slaya. Próbowałem uzyć forward zp_user_infected_pre(id, infector) ale nic z tego mi nie wyszło;/. Bardzo proszę o pomoc:)
Kod nizej.
#include <amxmodx>
#include <amxmisc>
#include <fun>
#include <zombieplague>

new Odliczaniemadmg[33]

public plugin_init()
{
register_event("Damage", "Damage", "b", "2!=0")
}
public Damage(id, infector)
{
		new vid = read_data(0) // vid == id
		new kid = get_user_attacker(id) // Gracz atakujacy
		if((zp_get_user_zombie(id) && is_user_alive(id))  && (vid || kid))
{
set_task ( 1.0, "madmg", id )
}
}
public madmg(id)
{
		Odliczaniemadmg[id] = 60	// Czas kampienia
	  
		if(task_exists(id + 3431))
		{
				remove_task(id + 3431)
		}
		set_task(1.0, "koniecdmg", id + 3431, _, _, "b")
	  
		return PLUGIN_CONTINUE
}
public koniecdmg(task_id)
{
		new id = task_id - 3431
	  
		set_hudmessage(255, 255, 255, -1.00, 0.25, 2, 0.02, 1.0, 0.01)
		show_hudmessage(id, "Masz %d sekund na zatakowanie ludzi.", Odliczaniemadmg[id])
		Odliczaniemadmg[id] -= 1
	  
		if(!is_user_connected(id) || !is_user_alive(id) || Odliczaniemadmg[id] <= 0)
		{
				if(task_exists(task_id))
				{
   user_kill(id)
   remove_task(task_id)
				}
		}
if(!zp_get_user_zombie(id) || !is_user_connected(id) || !is_user_alive(id) || Odliczaniemadmg[id] <= 0)
		 {
				if(task_exists(task_id))
				{
   remove_task(task_id)
				}
		}

}

  • +
  • -
  • 0

#2 Sizar32

    Początkujący

  • Autor tematu
  • Użytkownik

Reputacja: 0
Nowy

  • Postów:10
  • Imię:Czarek
  • Lokalizacja:Podlaskie
Offline

Napisano 28.06.2012 17:49

refresh
  • +
  • -
  • 0

#3 Pan PrO

    Wszechpomocny

  • Użytkownik

Reputacja: 99
Zaawansowany

  • Postów:388
  • Lokalizacja:PC
Offline

Napisano 28.06.2012 18:44

Powinno działać



#include <amxmodx>
#include <amxmisc>
#include <fun>
#include <zombieplague>

new Odliczaniemadmg[33]

public plugin_init()
{
register_event("Damage", "Damage", "b", "2!=0")
}
public Damage(id, infector)
{
new vid = read_data(0) // vid == id
new kid = get_user_attacker(id) // Gracz atakujacy
if((zp_get_user_zombie(id) && is_user_alive(id)) && (vid || kid))
{
set_task ( 1.0, "madmg", id )
}
}
public madmg(id)
{
Odliczaniemadmg[id] = 60 // Czas kampienia

if(task_exists(id + 3431))
{
remove_task(id + 3431)
}
set_task(1.0, "koniecdmg", id + 3431, _, _, "b")

return PLUGIN_CONTINUE
}
public koniecdmg(task_id)
{
new id = task_id - 3431

set_hudmessage(255, 255, 255, -1.00, 0.25, 2, 0.02, 1.0, 0.01)
show_hudmessage(id, "Masz %d sekund na zatakowanie ludzi.", Odliczaniemadmg[id])
Odliczaniemadmg[id] -= 1

if(!is_user_connected(id) || !is_user_alive(id) || Odliczaniemadmg[id] <= 0)
{
if(task_exists(task_id))
{
user_kill(id)
remove_task(task_id)
}
}
if(!zp_get_user_zombie(id) || !is_user_connected(id) || !is_user_alive(id) || Odliczaniemadmg[id] <= 0)
{
if(task_exists(task_id))
{
remove_task(task_id)
}
}

}

public zp_user_infected_post(id, infector)
{
Odliczaniemadmg[infector] = 0
remove_task(task_id)
return PLUGIN_CONTINUE
}

  • +
  • -
  • 1

#4 Sizar32

    Początkujący

  • Autor tematu
  • Użytkownik

Reputacja: 0
Nowy

  • Postów:10
  • Imię:Czarek
  • Lokalizacja:Podlaskie
Offline

Napisano 29.06.2012 19:22

Musiałem poprawić troszeczkę ale jest OK bez ciebie bym byl w ....
Możesz wytłumaczyć dlaczego jak wpisywałem tak:

public zp_user_infected_post(id, infector)
{
new infec = infector
}

To zmienna infec nie działała jako infector
  • +
  • -
  • 0

#5 Pan PrO

    Wszechpomocny

  • Użytkownik

Reputacja: 99
Zaawansowany

  • Postów:388
  • Lokalizacja:PC
Offline

Napisano 29.06.2012 20:12

napisz w zmiennych globalnych

new infec;

i zmien zp_user_infected_post(id, infector) na ten

public zp_user_infected_post(id, infector)
infec = infector

i zmienna infec będzie ci zwracać id osoby która zaraziła człowieka

Użytkownik Pan PrO edytował ten post 29.06.2012 20:18

  • +
  • -
  • 1

#6 Gość_21977_*

  • Gość

Reputacja: 0

Offline

Napisano 29.06.2012 20:22

To zmienna infec nie działała jako infector

Inicjując zmienną wewnątrz funkcji zp_user_infected_post(), inicjujesz ją lokalnie, a zmienne lokalne nie są dostępne nigdzie poza funkcją, w której zostały zainicjowane.
Należy użyć zmiennej globalnej, tzn. zainicjować ją na zewnątrz jakiejkolwiek funkcji. Wówczas wystarczy zmienić jej wartość, a będzie możliwe odczytanie jej wartości wszędzie.

#7 Sizar32

    Początkujący

  • Autor tematu
  • Użytkownik

Reputacja: 0
Nowy

  • Postów:10
  • Imię:Czarek
  • Lokalizacja:Podlaskie
Offline

Napisano 30.06.2012 13:45

Dziękuję bardzo za aktywna wypowiedz. Temat do zamknięcia.
  • +
  • -
  • 0

#8 Gość_21977_*

  • Gość

Reputacja: 0

Offline

Napisano 30.06.2012 14:00

Wiadomość wygenerowana automatycznie


Ten temat został zamknięty przez moderatora.

Powód: Pomoc udzielona

Jeśli się z tym nie zgadzasz, Dołączona grafika raportuj ten post, a moderator lub administrator rozpatrzy go ponownie.


Z pozdrowieniami,
Zespół AMXX.PL




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

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