Prosba o naprawe klasy (Nie dzialaja skoki)
NEQU#
19.10.2016
#include <amxmodx> #include <codmod> #include <hamsandwich> #include <fakemeta> #define RedukcjaWProcentach 15 #define Redukcja ((100-RedukcjaWProcentach)/100.0) new bool:ma_klase[33]; new skoki[33]; new const nazwa[] = "(Premium) Obronca"; new const opis[] = "Otrzymujesz 15 procent mniejsze obrazenia, trzy skoki i dwie apteczki"; new const bronie = (1<<CSW_FAMAS)|(1<<CSW_DEAGLE); new const zdrowie = 20; new const kondycja = 20; new const inteligencja = 0; new const wytrzymalosc = 10; public plugin_init() { register_plugin(nazwa, "1.0", "BlackPerfum"); cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc); RegisterHam(Ham_TakeDamage, "player", "TakeDamage"); register_forward(FM_CmdStart, "CmdStart"); register_think("medkit", "Think_Apteczki"); RegisterHam(Ham_Spawn, "player", "fwSpawn_Apteczki", 1); } public plugin_precache() { sprite_white_apteczki = precache_model("sprites/white.spr"); precache_model("models/w_medkit.mdl"); } public client_disconnect(id) { new entApteczki = find_ent_by_class(0, "medkit"); while(entApteczki > 0) { if(entity_get_edict(entApteczki, EV_ENT_owner) == id) remove_entity(entApteczki); entApteczki = find_ent_by_class(entApteczki, "medkit"); } } public cod_class_enabled(id) { if(!(get_user_flags(id) & ADMIN_LEVEL_A)) { client_print(id, print_chat, "[(Premium) Obronca] Nie masz uprawnien, aby uzywac tej klasy.") return COD_STOP; } ilosc_apteczek_gracza[id] = 2; ma_klase[id] = true; return COD_CONTINUE; } public cod_class_disabled(id) ma_klase[id] = false; public TakeDamage(this, idinflictor, idattacker, Float:damage, damagebits) { if(!ma_klase[this]) return HAM_IGNORED; SetHamParamFloat(4, damage*Redukcja); return HAM_IGNORED; } public cod_class_skill_used(id) { if (!ilosc_apteczek_gracza[id]) { client_print(id, print_center, "Masz tylko 2 apteczki na runde!"); } else { ilosc_apteczek_gracza[id]--; new Float:origin[3]; entity_get_vector(id, EV_VEC_origin, origin); new ent = create_entity("info_target"); entity_set_string(ent, EV_SZ_classname, "medkit"); entity_set_edict(ent, EV_ENT_owner, id); entity_set_int(ent, EV_INT_solid, SOLID_NOT); entity_set_vector(ent, EV_VEC_origin, origin); entity_set_float(ent, EV_FL_ltime, halflife_time() + 7 + 0.1); entity_set_model(ent, "models/w_medkit.mdl"); set_rendering ( ent, kRenderFxGlowShell, 255,0,0, kRenderFxNone, 255 ) ; drop_to_floor(ent); entity_set_float(ent, EV_FL_nextthink, halflife_time() + 0.1); } } public fwSpawn_Apteczki(id) { if(is_user_alive(id)) ilosc_apteczek_gracza[id] = 2; } public Think_Apteczki(ent) { if(!is_valid_ent(ent)) return PLUGIN_CONTINUE; new id = entity_get_edict(ent, EV_ENT_owner); new dist = 300; new heal = 10+floatround(cod_get_user_intelligence(id)*0.3); if (entity_get_edict(ent, EV_ENT_euser2) == 1) { new Float:forigin[3]; entity_get_vector(ent, EV_VEC_origin, forigin); new entlist[33]; new numfound = find_sphere_class(0,"player", float(dist),entlist, 32,forigin); for (new i=0; i < numfound; i++) { new pid = entlist[i]; if (get_user_team(pid) != get_user_team(id)) continue; new maksymalne_zdrowie = 100+cod_get_user_health(pid); new zdrowie = get_user_health(pid); new Float:nowe_zdrowie = (zdrowie+heal<maksymalne_zdrowie)?zdrowie+heal+0.0:maksymalne_zdrowie+0.0; if (is_user_alive(pid)) entity_set_float(pid, EV_FL_health, nowe_zdrowie); } entity_set_edict(ent, EV_ENT_euser2, 0); entity_set_float(ent, EV_FL_nextthink, halflife_time() + 1.5); return PLUGIN_CONTINUE; } if (entity_get_float(ent, EV_FL_ltime) < halflife_time() || !is_user_alive(id)) { remove_entity(ent); return PLUGIN_CONTINUE; } if (entity_get_float(ent, EV_FL_ltime)-2.0 < halflife_time()) set_rendering ( ent, kRenderFxNone, 255,255,255, kRenderTransAlpha, 100 ); new Float:forigin[3]; entity_get_vector(ent, EV_VEC_origin, forigin); new iOrigin[3]; for(new i=0;i<3;i++) iOrigin[i] = floatround(forigin[i]); message_begin( MSG_BROADCAST, SVC_TEMPENTITY, iOrigin ); write_byte( TE_BEAMCYLINDER ); write_coord( iOrigin[0] ); write_coord( iOrigin[1] ); write_coord( iOrigin[2] ); write_coord( iOrigin[0] ); write_coord( iOrigin[1] + dist ); write_coord( iOrigin[2] + dist ); write_short( sprite_white_apteczki ); write_byte( 0 ); // startframe write_byte( 0 ); // framerate write_byte( 10 ); // life write_byte( 10 ); // width write_byte( 255 ); // noise write_byte( 255 ); // r, g, b write_byte( 100 );// r, g, b write_byte( 100 ); // r, g, b write_byte( 128 ); // brightness write_byte( 0 ); // speed message_end(); entity_set_edict(ent, EV_ENT_euser2 ,1); entity_set_float(ent, EV_FL_nextthink, halflife_time() + 0.5); return PLUGIN_CONTINUE; } public CmdStart(id, uc_handle) { if(!is_user_alive(id) || !ma_klase[id]) //jeśli tworzymy perk, wstawiamy ma_perk zamiast ma_klase return FMRES_IGNORED; new flags = pev(id, pev_flags); if((get_uc(uc_handle, UC_Buttons) & IN_JUMP) && !(flags & FL_ONGROUND) && !(pev(id, pev_oldbuttons) & IN_JUMP) && skoki[id]) { skoki[id]--; new Float:velocity[3]; pev(id, pev_velocity,velocity); velocity[2] = random_float(265.0,285.0); set_pev(id, pev_velocity,velocity); } else if(flags & FL_ONGROUND) skoki[id] = 2; //tutaj podajemy ilość skokow w powietrzu, jaką może wykonać klasa return FMRES_IGNORED; }
NNK
30.10.2016
Teraz mam maly problem bo po zmianie klasy z obecnej na inna skoki zostaja, jakas pomoc ? gdzie jeszcze wciasnac warunek ma_klase
_McHappy
30.10.2016
W funkcji cmd start warunki też wydają się poprawne. Sprawdź, czy Twoja wersja zgadza się z wersją kolegi wyżej.
Wklej też: client_print(id, 3, "Skoki klasy Obronca");
Zaraz po pierwszym fmres_ignored funkcji cmd_start.
Jeżeli, podczas gry inna klasą, napis w cudzysłowie się wyświetla na chacie, to znaczy, że klasa odziedziczyła skoki po klasie Obrońca. Jeżeli nic się nie pokazuje, to problem leży zupełnie gdzie indziej.
Użytkownik _McHappy edytował ten post 30.10.2016 18:49
FinalRing
31.10.2016
Zamiast mu pisać niepotrzebne tezy poprawili byście klasę...
Proszę poprawione powinno wszystko śmigać.
codclass_Obronca.sma 5,58 KB 67 Ilość pobrań
_McHappy
01.11.2016
Chyba nie czytałeś pierwszego postu...Zamiast mu pisać niepotrzebne tezy poprawili byście klasę...
Proszę poprawione powinno wszystko śmigać.
Na gotowe to każdy potrafi, wytłumaczyć to już inna sprawa.
Użytkownik _McHappy edytował ten post 01.11.2016 10:38
FinalRing
01.11.2016
Chyba nie czytałeś pierwszego postu...Zamiast mu pisać niepotrzebne tezy poprawili byście klasę...
Proszę poprawione powinno wszystko śmigać.
Na gotowe to każdy potrafi, wytłumaczyć to już inna sprawa.
Proszę bardzo co w moim kodzie sie różni przede wszystkim:
cod_class enabled i disabled koniecznie z nawiasami { oraz }
dodana bilbioteka <engine> usunięty registerham hamspawn
nie potrzebnie mu jakies warunki pisaliście bo wystarczy popatrzeć jak klasa ma wyglądać mogłes zacząć edytowac klase podstawową z codmod medyk i dodac do niej tylko umiejętność mniejszych obrażen i skoki a skoki to kwestia minuty lub 2 by dodać bo to tylko jeden register_forward new skoki oraz public i gotowe
Użytkownik FinalRing edytował ten post 01.11.2016 12:28
NNK
03.11.2016
Mc happy dzięki za fajny pomysl na sprawdzanie bugow bo ja bym nie pomyslal zeby tak zrobic, będę z tego korzystal jesli moge, a co do klasy, to dzięki za poprawienie jej chlopaki Oczywiscie plusy poszly