Błęda popełniłem
I to takiego że...
//Uchwyt zarejestrowanego eventu
public TouchWeaponbox(WeaponBox /*id bytu dotykanego*/,id /*id bytu dotykającego*/)
{
//Rozdzieliłem warunek żeby był bardziej czytelny xD
if(pev_valid(WeaponBox) != 2) return HAM_IGNORED
// Sprawdzam czy byt o id == WeaponBox posiada dane pdata + czy jest poprawny
if(pev_valid(id) != 2) return HAM_IGNORED
// Sprawdzam czy byt o id == id posiada dane pdata + czy jest poprawny
if(~pev(WEaponBox,pev_flags) & FL_ONGROUND) return HAM_IGNORED
// Przydało by się sprawdzić czy WeaponBox jest na ziemi aby
// Gracz który go wyrzuca nie widział komunikatu
if(pev(id,pev_weapons) & 1<<CSW_AWP) return HAM_IGNORED
// Sprawdzam czy id ma awp
if(!get_pcvar_num(cvar_awp_on)) return HAM_IGNORED
// Sprawdzam twojego cvara
new weapon = get_pdata_cbase(WeaponBox,35,4)
//Pobieram pierwszy byt zawarty w WeaponBox'ie (na 1 slocie tzn. pobieram id broni w weaponboxie (nie to CSW_ a byta))
if(pev_valid(weapon) != 2) return HAM_IGNORED
// Sprawdzam czy awp jest poprawne + czy przechowuje dane pdata
if(get_pdata_int(weapon,m_iId,4) != CSW_AWP) return HAM_IGNORED
// Sprawdzam czy broń w weaponboxie to awp
//Zapisuje sobie aktualny czas
new time = global_get(glb_time)
if(pev(WeaponBox,pev_iuser3) == id && pev(WeaponBox,pev_iuser4)+5 < time) return HAM_SUPERCEDE
// Sprawdzam czy ostatni byt który dotnął weaponbox'a to id
// Oraz czy ostatni czas dotnięcia był poniżej 5 sek temu
// Jeśli tak to blokuje podniesienie
// Robie to po to aby gracz który np. wszedł w weapon boxa ale nie mógł go podnieść bo było za dużo awp
// Za jakiś czas znów mógł w niego wejść np. kiedy ludzie z awp zginą buhahahaha xD
set_pev(WeaponBox,pev_iuser3,id)
set_pev(WeaponBox,pev_iuser4,time)
// Zapisuje do wolnego miejsca id bytu dotykającego
// oraz czas kiedy dotnął
// Bo pev_iuser1~4 są nie używanymi zmiennymi xD
// Dlatego warto z nich skożystać w takim wypadku gdyż weaponbox'ów może być i 1970
// a takich wielkich zmiennych nie chcemy
// Zmieniłem pozycję sprawdzania czy gracz ma awp dlatego nie potrzebuję teraz sprawdzania czy jest żywy
new team = get_user_team(id)
// Pobieram team gracza
if(g_iSniperNum[team] >= (team == 2 ? get_pcvar_num(cvar_max_awpct):get_pcvar_num(cvar_max_awptt)))
{
//Sprawdzam czy jest za dużo awp na dany team
//Jeśli tak to blokuje podniesienie i pokazuje wiadomość
client_print( id, print_chat , "TEST" );
return HAM_SUPERCEDE
}
return HAM_IGNORED
}
Jeśli chodzi o:
Jak nikt nie ma w teamie AWP, to nie można podnosić. A efekt miał być odwrotny.
Musisz pokazać więcej kodu... Albo sprecyzować wszystkie możliwe wartości które tu nie są pokazane
Więc coś musi być popientrolone we wcześniejszych warunkach.
Akurat tam są same podstawowe rzeczy
W dodatku komunikat się wyświetla, gdy wyrzucimy broń.
Bo przez 1/8921317283217 sekundy dotykamy weaponbox'a
Poprawione
Wtf ? Post się 2x wysłał
Użytkownik BlackPerfum edytował ten post 30.06.2014 18:46
Chcesz napisać do mnie na
PW to:
Mój tok myślenia jest błędny? Wskaż mi błąd zmienie to!
Aktualnie bije limit 32 graczy (łącze serwery) ale nadal są lagi przy zbyt dużym przesyłu informacji
Gra się płynnie do 40~50 graczy potem łącze pada i zamiast biegać ludzie się teleportują