←  Poradniki, Łatki oraz Pluginy

AMXX.pl: Support AMX Mod X i SourceMod

»

CoD Stary
[Klasa] Złodziej

  • +
  • -
Klakier - zdjęcie Klakier 04.01.2012

Przerobiłem klasę Złodziej z CoD'a nowego na starego. Umiejętnością tej klasy jest to, że może ona kraść itemy wrogom. Przerobiłem ja ze względu na to, że wiele osób szuka tej klasy do cod'a Starego.

Zaczynajmy:

Tworzymy nowa klasę, czyli dodajemy
do

enum { NONE = 0

to:
Zlodziej

Do:
new const nazwy_klas[][]

dodajemy:
"Zlodziej"


Następnie do:
new const opisy_klas[][]

dodajemy:
"Dostaje GALIL'a. Moze ukrasc przedmiot ofiarze"


Potem do public odrodzenie dodajemy:


case Zlodziej:
{
give_item(id, "weapon_galil");
}


Następnie pod public Damage(id) kopiujemy to:


public Zapytaj(id)
{
new tytul[55];
format(tytul, 54, "Czy chcesz ukrasc : %s ?", nazwy_przedmiotow[perk_ofiary[id]]);
new menu = menu_create(tytul, "Zapytaj_Handle");

menu_additem(menu, "Tak");
menu_setprop(menu, MPROP_EXITNAME, "Nie");

menu_display(id, menu);
}

public Zapytaj_Handle(id, menu, item)
{
if(item)
return;

if(informacje_przedmiotu_gracza[ofiara[id]][0] != perk_ofiary[id])
return;

new nick_zlodzieja[33];
get_user_name(id, nick_zlodzieja, 32);
ColorChat(ofiara[id], RED, "[COD:MW]^x01 Twoj item zostal skradziony przez^x03 %s^x01.", nick_zlodzieja);
UsunPrzedmiot(ofiara[id]);
DajPrzedmiot(id, perk_ofiary[id]);
}


Potem do public Death() dodajemy przed SprawdzPoziom(attacker);
to:

if(klasa_gracza[attacker] == Zlodziej)
{
if(random(2))
return HAM_IGNORED;

if(!informacje_przedmiotu_gracza[attacker][0])
return HAM_IGNORED;

if(!(perk_ofiary[attacker] = informacje_przedmiotu_gracza[id][0]))
return HAM_IGNORED;

ofiara[attacker] = id;

Zapytaj(attacker);
}


Mam nadzieję, że się przyda :)
Odpowiedz

Sparta - zdjęcie Sparta 27.01.2012

Szukałem tego + leci
Odpowiedz

  • +
  • -
Petrus1610 - zdjęcie Petrus1610 30.01.2012

Hej, a czy móglby ktoś to przerobić na klasę premium z flagą T (admin_level_h) ? ;)
Odpowiedz

  • +
  • -
Kendzior87 - zdjęcie Kendzior87 30.01.2012

Error: Undefined symbol "perk_ofiary" on line 1630
Warning: Expression has no effect on line 1630
Error: Expected token: ";", but found "]" on line 1630
Error: Invalid expression, assumed zero on line 1630
Error: Too many error messages on one line on line 1630

Compilation aborted.


to jest linia 1630 u mnie:
format(tytul, 54, "Czy chcesz ukrasc : %s ?", nazwy_przedmiotow[perk_ofiary[id]]);

Użytkownik Kendzior87 edytował ten post 30.01.2012 19:05
Odpowiedz

  • +
  • -
Klakier - zdjęcie Klakier 01.02.2012

Hej, a czy móglby ktoś to przerobić na klasę premium z flagą T (admin_level_h) ? ;)


przed

	if(klasa_gracza[id])	
{
nowa_klasa_gracza[id] = item;
client_print(id, print_chat, "[COD:MW] Twoja klasa zostanie zmieniona w nastepnej rundzie :)");
}

else
{
klasa_gracza[id] = item;
WczytajDane(id, klasa_gracza[id]);
Odrodzenie(id);
}
return PLUGIN_CONTINUE;



dodaj:

	if(item == Zlodziej && !(get_user_flags(id) & ADMIN_LEVEL_H))
{
client_print(id, print_chat, "[COD:MW] Nie masz Vipa! Wejdz na www.xxxxxx.pl i zakup go teraz!");
WybierzKlase(id);
return PLUGIN_CONTINUE
}



@up

kendzior daj cały public
Użytkownik Klakier edytował ten post 01.02.2012 21:10
Odpowiedz

  • +
  • -
Kendzior87 - zdjęcie Kendzior87 02.02.2012

public Damage(id)
{
new attacker = get_user_attacker(id);
new damage = read_data(2);
new hp = get_user_health(attacker);
if(!is_user_alive(attacker) || !is_user_connected(attacker) || id == attacker || !klasa_gracza[attacker])
return PLUGIN_CONTINUE;

if(informacje_przedmiotu_gracza[attacker][0] == 29 && random(3) == 1) // random(3) == 1) znaczy 1/3 szans, mozemy dowolnie zmienic.
draw_crosshair(id);

if(informacje_przedmiotu_gracza[attacker][0] == 12 && random_num(1, informacje_przedmiotu_gracza[id][1]) == 1)
Display_Fade(id,1<<14,1<<14 ,1<<16,255,155,50,230);

if(klasa_gracza[attacker] == Specjalista && random(5) == 1)
Display_Fade(id,1<<14,1<<14 ,1<<16,255,155,50,230);

if(get_user_team(id) != get_user_team(attacker) && informacje_przedmiotu_gracza[attacker][0] == 42 && random_num(1, informacje_przedmiotu_gracza[attacker][1]) == 1)
{
if(hp>=maksymalne_zdrowie_gracza[attacker])
{
return PLUGIN_CONTINUE;
}
else
{
hp+=floatround(1.0*damage/(informacje_przedmiotu_gracza[attacker][1]), floatround_floor);
set_user_health(attacker, min(hp, maksymalne_zdrowie_gracza[attacker]));
}
}
if(get_user_team(id) != get_user_team(attacker))
{
while(damage>20)
{
damage-=20;
doswiadczenie_gracza[attacker]++;
}
}
if(get_user_team(id) != get_user_team(attacker) && klasa_gracza[attacker] == Marynarz)
{
if(hp>=maksymalne_zdrowie_gracza[attacker])
{
return PLUGIN_CONTINUE;
}
else
{
hp+=floatround(1.0*damage/2, floatround_floor);
set_user_health(attacker, min(hp, maksymalne_zdrowie_gracza[attacker]));
}
}
if(get_user_team(id) != get_user_team(attacker))
{
while(damage>20)
{
damage-=20;
doswiadczenie_gracza[attacker]++;
}
}
if(informacje_przedmiotu_gracza[attacker][0] == 51 && random_num(1, informacje_przedmiotu_gracza[attacker][1]) == 1)
{
if(task_exists(id+2936))
remove_task(id+2936);
palenie_gracza[id] = 40;
set_task(0.5, "burning_flame", id+2936, _, _, "b");
}
if(informacje_przedmiotu_gracza[attacker][0] == 55 && random_num(1, 6) == 1)
{
new clip, ammo
get_user_weapon(id, clip, ammo);
if(ammo > 0)
{
set_user_clip(attacker, ammo+1);
}
}

SprawdzPoziom(attacker);
return PLUGIN_CONTINUE;
}
Odpowiedz

  • +
  • -
Klakier - zdjęcie Klakier 02.02.2012

Coś źle dodajesz. U mnie wszystko śmiga :/ Chyba, że podasz twoje całe sma ja naprawię.
Odpowiedz

  • +
  • -
Kendzior87 - zdjęcie Kendzior87 02.02.2012

wyślę Ci na PM. dzięki.
Odpowiedz

  • +
  • -
Klakier - zdjęcie Klakier 02.02.2012

Sorki, zapomniałem, że trzeba dodać w zmiennych itemów:

new ofiara[33], perk_ofiary[33];
Odpowiedz

  • +
  • -
Tapip# - zdjęcie Tapip# 09.02.2012

Nie dziala :/
Odpowiedz

  • +
  • -
Klakier - zdjęcie Klakier 10.02.2012

mogę pomóc na PW lub tutaj opisz błędy
Odpowiedz

  • +
  • -
Lost - zdjęcie Lost 10.02.2012

Jak dodać klasie, aby miała 1/5 szansy na kradzież itemu?
Odpowiedz

  • +
  • -
Klakier - zdjęcie Klakier 10.02.2012


if(random(2))
return HAM_IGNORED;



na


if(random(5))
return HAM_IGNORED;

Odpowiedz

  • +
  • -
Lost - zdjęcie Lost 11.02.2012

Rozumiem, że wcześniej miał 1/2 szansy?

Dodałem wcześniej:


if(!informacje_przedmiotu_gracza[attacker][0] && random_num(1,5) == 1)
return HAM_IGNORED;

i działało.
Odpowiedz

  • +
  • -
Klakier - zdjęcie Klakier 11.02.2012

też może być tak jak mówisz
Odpowiedz

  • +
  • -
Equilibrium - zdjęcie Equilibrium 15.02.2012

Komuś to działa? Bo zcompilowało mi się dobrze, klasa jest, ale itemu za zabicie nie dostaje na tej klasie. Złodziejstwo itema też nie działa :/
Odpowiedz

  • +
  • -
Klakier - zdjęcie Klakier 15.02.2012

Złodziej ma kilka szans na ukradnięcie. On nie kradnie od razu po zabiciu. Zależy.
Odpowiedz