Zerknie ktoś czy dobrze napisałem?
Spiker velSatiS
28.03.2013
Zerknie ktoś czy dobrze napisałem perka?
W kompilacji mam błędy:
W kompilacji mam błędy:
codperk_silnikgrajka.sma(143) : error 017: undefined symbol "HAM_IGNORED" codperk_silnikgrajka.sma(145) : error 017: undefined symbol "ma_perk" codperk_silnikgrajka.sma(145) : warning 215: expression has no effect codperk_silnikgrajka.sma(145) : error 001: expected token: ";", but found "]" codperk_silnikgrajka.sma(145) : error 029: invalid expression, assumed zero codperk_silnikgrajka.sma(145) : fatal error 107: too many error messages on one line Compilation aborted. 5 Errors.
Spoiler
Użytkownik Benio101 edytował ten post 28.03.2013 18:56
Dodanie znacznika SMA, SPOILER, indentacja kodu
Gość_21977_* 28.03.2013
Nie załączyłeś biblioteki
Nie zarejestrowałeś otrzymywania obrażeń
Korzystasz z ma_perk, jednak nie jest ona zainicjowana.
Jeśli miałaby to być tablica typu boolean, to proponuję użyć szybszej sumy binarnej.
Do cod_perk_enabled dodać
Dodać
Zamienić
Na końcu client_disconnect dodać
Pomimo usuwania min gracza po opuszczeniu przez niego serwera, sugerowałbym dodać profilaktycznie po
Nie jestem pewien, czy spawn miny w miejscy gracza nie sprawi, że ta utkwi w jego ciele, jeśli tak, to
możesz skorzystać z funkcji get_origin_from_dist_player sebula, by zespawnować minę przed / za graczem.
#include <hamsandwich>
Nie zarejestrowałeś otrzymywania obrażeń
RegisterHam(Ham_TakeDamage, "player", "TakeDamage", 1);
Korzystasz z ma_perk, jednak nie jest ona zainicjowana.
Jeśli miałaby to być tablica typu boolean, to proponuję użyć szybszej sumy binarnej.
new ma_perk;
#define SetBit(%1,%2) (%1|=(1<<(%2)))
#define ClearBit(%1,%2) (%1&=~(1<<(%2)))
#define CheckBit(%1,%2) (%1&(1<<(%2)))
Do cod_perk_enabled dodać
SetBit(ma_perk, id);przed
return COD_CONTINUE;
Dodać
public cod_perk_disabled(id){
ClearBit(ma_perk, id);
}
Zamienić
if(ma_perk[idattacker])
if(CheckBit(ma_perk, idattacker))
Na końcu client_disconnect dodać
ClearBit(ma_perk, id);
Pomimo usuwania min gracza po opuszczeniu przez niego serwera, sugerowałbym dodać profilaktycznie po
new attacker = entity_get_edict(ent, EV_ENT_owner);sprawdzenie, czy attacker to gracz.
ilosc_min_gracza[id] = 5;proponowałbym przenieść do eventu NowaRunda, a ResetHUD całkiem usunąć.
Nie jestem pewien, czy spawn miny w miejscy gracza nie sprawi, że ta utkwi w jego ciele, jeśli tak, to
możesz skorzystać z funkcji get_origin_from_dist_player sebula, by zespawnować minę przed / za graczem.