Fili:P @ dOn tHe Pr0oo
Albo wy też nie zrozumieliście idei klasy, albo ja wam źle wytłumaczyłem
Chodzi o to by oprócz klasy, również zabójca, który nie jest klasą "Kim Ir Sen", a ma w teamie gracza z takową klasą, dostaje dodatkowego expa. A tak po kolei
@Fili:P
W tym przypadku zabójca nie będący klasą dostanie expa, ale zabójca będący klasą już nie, z tym bugiem to dobrze trafiłes, a pytanie o cstrike, bo wcześniej dałem "cs_get_user_team", aż w końcu zdecydowałem się na "get_user_team", i tak po prostu zapomniałem usunąć

@dOn tHe Pr0oo
Zabójca niebędący klasą nie dostanie expa, ale zabójca będący klasą sprawi że cały team żyjący dostanie expa
1. Tu muszę ci przyznać rację
2. Fakt, czysta pomyłka

(ach, sesja egzaminacyjna dała mi się we znaki)
3. Cstrike: czytaj treść do Fili:P, a HamSandwich to do
RegisterHam(Ham_Killed, "player", "Zabojstwo_Klasy", 1);
, uznałem ze to ma większe możliwości, ponieważ id ofiary i zabójcy jest w argumencie funkcji, dzięki czemu oszczędzimy pamięć, nie deklarując nowych zmiennych (nawet jeśli to lokalne)
4. Wiem że to trochę dziwacznie wygląda, ale muszę dopilnować, by np: przeciwnicy nie dostali expa, albo "nasi" nie dostawali dwa razy.
Wniosek: Muszę przyznać się do błędu, ja źle wytłumaczyłem ideę klasy, a kod też spartoliłem (sesja egzaminacyjna

)
moja poprawka prezentuje się tak
/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <codmod>
#include <hamsandwich>
new bool: ma_klase[33];
new kimirsen;
new const nazwa[] = "Kim Ir Sen (Premium)";
new const opis[] = "Zabojca majacy w teamie klase oraz sama klasa otrzymuje dodatkowe 20 exp'a za zabojstwo";
new const bronie = 1<<CSW_AK47 | 1<<CSW_SMOKEGRENADE | 1<<CSW_HEGRENADE | 1<<CSW_FLASHBANG | 1<<CSW_FIVESEVEN;
new const zdrowie = 37;
new const kondycja = 25;
new const inteligencja = 15;
new const wytrzymalosc = 20;
public plugin_init()
{
register_plugin(nazwa, "1.1", "Hleb & d0n tHe Pr0oo");
RegisterHam(Ham_Killed, "player", "Jest_Klasa", 1);
RegisterHam(Ham_Killed, "player", "Nie_Jest_Klasa", 1);
cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc);
}
public cod_class_enabled(id)
{
if(!(get_user_flags(id) & ADMIN_LEVEL_H))
{
client_print(id, print_chat, "[Kim Ir Sen] Nie masz uprawnien, aby uzywac tej klasy.")
return COD_STOP;
}
ma_klase[id] = true;
return COD_CONTINUE;
}
public cod_class_disabled(id)
{
kimirsen = 0;
ma_klase[id] = false
}
public Jest_Klasa(this, attacker)
{
if(!is_user_connected(attacker))
return HAM_IGNORED
if(!is_user_alive(attacker))
return HAM_IGNORED
if(!ma_klase[attacker])
return HAM_IGNORED
if(get_user_team(this) != get_user_team(attacker))
cod_set_user_xp(attacker, cod_get_user_xp(attacker)+20)
return HAM_IGNORED
}
public Nie_Jest_Klasa(this, attacker)
{
new Players[32], playerCount, id;
get_players(Players, playerCount, "aeh", (get_user_team(attacker)==1)?"TERRORIST":"CT");
for(new i=0; i<=playerCount; i++)
{
id= Players[i];
if(ma_klase[id])
{
kimirsen = id;
break;
}
}
if(!kimirsen)
return HAM_IGNORED;
if(!is_user_connected(attacker))
return HAM_IGNORED
if(!is_user_alive(attacker) && !is_user_alive(kimirsen))
return HAM_IGNORED
if(get_user_team(this) != get_user_team(attacker) && attacker != kimirsen)
{
cod_set_user_xp(attacker, cod_get_user_xp(attacker)+20)
kimirsen = 0;
}
return HAM_IGNORED
}
Dla leniwych
codclass_kimirsen.sma 2,28 KB 63 Ilość pobrań
codclass_kimirsen.amxx
Obaj łapcie po + za wyłapanie błędów, ja zaś przepraszam za błędny kod, na przyszłość to trochę po sesji odpocznę
Użytkownik Hleb edytował ten post 08.07.2012 21:56