←  Poradniki/Łatki

AMXX.pl: Support AMX Mod X i SourceMod

»

Zombie Plague 5.0
Dodanie klasy zombie na flagę

Mountan. - zdjęcie Mountan. 19.08.2012

Chciałbyś zrobić klasę Premium ?
Nie wiesz jak ?

No to zaczynamy

Otwieramy .SMA jakiejś klasy

Krok 1

Dodajemy:
#include <zombieplague>

Krok 2

Po kodzie:
new const zclass_name[] = { "Zombie amxx" }
new const zclass_info[] = { "Premium" } 
new const zclass_model[] = { "premium" } 
new const zclass_clawmodel[] = { "premium.mdl" }
const zclass_health = 2100
const zclass_speed = 190
const Float:zclass_gravity = 1.0
const Float:zclass_knockback = 1.0

Dajemy:

new zombie


Krok 3

Zamieniamy:
zp_register_zombie_class(zclass_name, zclass_info, zclass_model,  zclass_clawmodel, zclass_health, zclass_speed, zclass_gravity,  zclass_knockback)

na:

zombie  = zp_register_zombie_class(zclass_name, zclass_info, zclass_model,  zclass_clawmodel, zclass_health, zclass_speed, zclass_gravity,  zclass_knockback)

Krok 4

Na końcu kodu dodajemy:

public zp_user_infected_pre(id)
{
    if(!(get_user_flags(id) & ADMIN_LEVEL_H))
    {
	    if (zp_get_user_next_class(id) == zombie)
	    {
		    zp_set_user_zombie_class(id, 0)
		    client_print(id, print_center, "Ta klasa jest premium")
	    }	
    }
}

Całość powinna wyglądać tak:

#include <amxmodx>
#include <fakemeta>
#include <zombieplague>
new const zclass_name[] = { "Zombie amxx" }
new const zclass_info[] = { "Premium" } 
new const zclass_model[] = { "premium" } 
new const zclass_clawmodel[] = { "premium.mdl" }
const zclass_health = 2100
const zclass_speed = 190
const Float:zclass_gravity = 1.0
const Float:zclass_knockback = 1.0
new zombie
public plugin_precache()
{
    register_plugin("klasa premum", "1.0", "Mountan.")
   
    zombie = zp_register_zombie_class(zclass_name, zclass_info, zclass_model,  zclass_clawmodel, zclass_health, zclass_speed, zclass_gravity,  zclass_knockback)
}
public zp_user_infected_pre(id)
{
    if(!(get_user_flags(id) & ADMIN_LEVEL_H))
    {
	    if (zp_get_user_next_class(id) == zombie)
	    {
		    zp_set_user_zombie_class(id, 0)
		    client_print(id, print_center, "Ta klasa jest premium")
	    }	
    }
} 
Odpowiedz

  • +
  • -
TheRock - zdjęcie TheRock 19.08.2012

Było jak zrobić klase premium zombi :)
http://amxx.pl/topic...zombie-premium/
Odpowiedz

  • +
  • -
ric0 - zdjęcie ric0 19.08.2012

TheRock. te dwa sposoby sie bardzo dużo różnią . i ten jest chyba łatwiejszy ale to nie znaczy że jest lepszy. więc chyba nie zaszkodzi jak będą dwa inne.
Odpowiedz

Mountan. - zdjęcie Mountan. 19.08.2012

ric0, ale wiesz ELOS to jego kumpel i zazdrość go zżera.
Odpowiedz

  • +
  • -
ELOS - zdjęcie ELOS 19.08.2012

Że mnie ? chłopczyku ani mnie ani TheRock nic nie zżera. Nie będę powodował kłótni na tym forum bo i tak szanuje osoby które coś tutaj udostępniają... Twój sposób może i jest łatwiejszy lecz w przypadku dużej ilości klas premium będzie się powtarzał. Na dodatek nie wyjaśniłeś graczom jak można dodać klasę premium ZM w przypadku głównego silnika klas zombie.

Albo jestem ślepy albo ktoś tutaj kombinuje oO

Krok 1

Dodajemy:
#include <zombieplague>

a tutaj

#include <amxmodx>
#include <fakemeta>
#include <zombieplague>


Nie żebym coś mówił ale skąd tam fakemeta? nie ma napisane aby dodać na dodatek nie wiem co tutaj wykorzystuje fakemete -.-


public zp_user_infected_pre(id)
{
if(!(get_user_flags(id) & ADMIN_LEVEL_H))
{
if (zp_get_user_next_class(id) == zombie)
{
zp_set_user_zombie_class(id, 0)
client_print(id, print_center, "Ta klasa jest premium")
}
}
}


Nie rozumiem tylko czemu w taki sposób zamykamy menu graczowi i go nie przywracamy ;/
Odpowiedz

Mountan. - zdjęcie Mountan. 19.08.2012

No bo poco przywracać menu po wyborze ?
I czytaj uważnie, że ta "zazdrość" tyczy się użytkownika "TheRock"
Już poprawiam kod ;)

Nie mogę edytować ;/

Admin zamień
#include <amxmodx>
#include <fakemeta>
#include <zombieplague>

na
#include <amxmodx>
#include <amxmisc>
#include <zombieplague>
Odpowiedz

  • +
  • -
ELOS - zdjęcie ELOS 19.08.2012

To i tak nic nie zmienia że tamten post był spam postem. Nie wnosił nic do tematu.

Po co przywracać menu po wyborze? Otóż nie przy wyborze tylko w funkcji która z powrotem zmienia ci klasę na podstawową osobiście mogę ci powiedzieć że gracze nie przepadają klikać kilka razy menu klas aby wybrać w końcu klasę.
Odpowiedz

  • +
  • -
Na 5tyk - zdjęcie Na 5tyk 19.08.2012

Mi to się zdaje, że po wybraniu tej klasy dostajemy ją na 1 rundę, a w następnej już nie mamy.

Robiłem to podobnie i działało mi tak jak opisałem wyżej.
Odpowiedz

  • +
  • -
ELOS - zdjęcie ELOS 19.08.2012

Zdaje mi się że działa na wszystkie rundy ponieważ jak przypisze już id klasy nie powinno być z tym problemu. Jedyny problem jest z tym że po prostu gracz może nie zobaczyć napisu że jest to klasa premium i dopiero zorientuje się w następnej rundzie jak każe mu wybrać na nowo klasę..
Odpowiedz

Mountan. - zdjęcie Mountan. 19.08.2012

Aaa sorry wiem o co chodzi, postaram się zaraz to poprawić.

Wystarczy dodać
return PLUGIN_HANDLED;
}
na końcu funkcji
Odpowiedz

  • +
  • -
ELOS - zdjęcie ELOS 19.08.2012

Chyba nadal nie rozumiesz ;/ w tym wypadku trzeba ponownie wyświetli menu zombie klas ponieważ po wyborze automatycznie zamyka menu w tym wypadku masz zrobione że klasę wybiera lecz od razu ustawia na klasę podstawową.
Odpowiedz

Mountan. - zdjęcie Mountan. 20.08.2012

Chyba rozumiem,
macie jakieś pomysły ?
Odpowiedz

  • +
  • -
ELOS - zdjęcie ELOS 20.08.2012

W tym przypadku nie wiem czy jest natyw czy nie lecz najlepszą opcją jest użycie natywu.
Odpowiedz

Mountan. - zdjęcie Mountan. 20.08.2012

ELOS, jestem początkującym i nie do końca potrafię tworzyć natywy,
pisałem ten poradnik sam wraz z kodem, a że u mnie na serwerze 1 raz po wyborze klasa zadziała, więc wrzuciłem tutaj.
Odpowiedz

  • +
  • -
Misiaczek ;c - zdjęcie Misiaczek ;c 20.08.2012

nie lepiej to tak rozwiązac?

Użytkownik MisieQ edytował ten post 20.08.2012 14:24
Odpowiedz

Mountan. - zdjęcie Mountan. 20.08.2012

Trochę namieszałeś, u Ciebie modeli nie można zmienić, wystarczyło edytować mój plik dodając


   return ZP_CLASS_AVAILABLE
  else
   return ZP_CLASS_NOT_AVAILABLE

}
return ZP_CLASS_AVAILABLE
}

P.S.
Ty napisałeś pod 5.0 nie pod 4.3
Odpowiedz