←  Problemy

AMXX.pl: Support AMX Mod X i SourceMod

»

Free Vip od x do x h

  • +
  • -
k4x4z5 - zdjęcie k4x4z5 24.02.2014

Witam mam problem z kodem na free vipa  od godziny "x" do"x"

#include <amxmodx>
#include <hamsandwich>

new FreeVip[33], Czas1, Czas2

public plugin_init(){
	register_plugin("Free VIP", "1.0", "Karol33k")
	
	Czas1 = register_cvar("free_vip_od_czasu", "15")
	Czas2 = register_cvar("free_vip_do_czasu", "16")
	
	RegisterHam(Ham_Spawn, "player", "fwHamPlayerSpawnPost", 1)
}

public fwHamPlayerSpawnPost(id)
{
	new szTime[3]
	get_time("%H",szTime,2)
	
	new Time_1 = get_pcvar_num(Czas1)
	new Time_2 = get_pcvar_num(Czas2)
	
	new iTime = str_to_num(szTime)
	if(Time_1 <= iTime <= 24)
	{
		if(!(get_user_flags(id) & ADMIN_LEVEL_H))
		{
			remove_user_flags(id, ADMIN_USER);
			set_user_flags(id, ADMIN_LEVEL_H);
			FreeVip[id] = true;
		}
	}
	else if(00 <= iTime <= Time_2)
	{
		if(!(get_user_flags(id) & ADMIN_LEVEL_H))
		{
			remove_user_flags(id, ADMIN_USER);
			set_user_flags(id, ADMIN_LEVEL_H);
			FreeVip[id] = true;
		}
	}
	else if(FreeVip[id])
	{
		remove_user_flags(id, ADMIN_LEVEL_H);
		set_user_flags(id, ADMIN_USER);
		FreeVip[id] = false;
	}
}

I jakos vip nie działa w tych godzinach bo jest ciagle mimo,ze czas jest ustawiony inaczej.

Odpowiedz

csdark - zdjęcie csdark 24.02.2014

Jak robiles vip przez generator na amxx to nie bedzie to dzialalo z tym vipem.

Odpowiedz

  • +
  • -
k4x4z5 - zdjęcie k4x4z5 24.02.2014

Vip nie jest z generatora

Odpowiedz

  • +
  • -
kyriuch - zdjęcie kyriuch 24.02.2014

warunek nie powinien być jeden dla dodania VIP'a

if(Time_1 <= iTime < Time_2+1)

?

a i nie jestem pewny, czy takie warunki działają w Pawnie, bo jeszcze takich nie używałem, ewentualnie alternatywa:

if(Time_1 <= iTime && Time_2+1 > iTime)

a ten post csdarka kompletnie bez sensu xD

 

@down

chodziło mi o alternatywny sposób (alternatywny warunek), nie jestem taki mądry, żeby używać tak wyszukanych nazw jak iloczyn logiczny i takie tam bzdety xD


Użytkownik kyriuch edytował ten post 24.02.2014 22:27
Odpowiedz

  • +
  • -
sweeper - zdjęcie sweeper 24.02.2014

 

 

a i nie jestem pewny, czy takie warunki działają w Pawnie, bo jeszcze takich nie używałem, ewentualnie alternatywa:

if(Time_1 <= iTime && Time_2+1 > iTime)

Hmmm, myślałem że to jest koniunkcja( && ) a nie alternatywa ( || )

 

Co do problemu, to zrób vip-owi natyw od sprawdzenia czy ma daną flagę czy nie poprzez wprowadzenie zmiennej

 

 

Odpowiedz

  • +
  • -
glut - zdjęcie glut 26.02.2014

A czy twój Vip ma sprawdzanie cały czas czy gracz ma flagę czy tylko przy wejściu ??
Odpowiedz

  • +
  • -
GwynBleidD - zdjęcie GwynBleidD 26.02.2014

1. Sprawdź, czy Twój plugin dodaje flagę użytkownikowi. Jeśli tak, to musisz jeszcze w swoim pluginie VIPa wymusić jej sprawdzenie w momencie, gdy zostanie nadana.
Odpowiedz

  • +
  • -
k4x4z5 - zdjęcie k4x4z5 26.02.2014

Plugin dodaje flage użytkownikowi, jak wymusic jej sprawdzenie?:D

Odpowiedz

  • +
  • -
kyriuch - zdjęcie kyriuch 26.02.2014

if(get_user_flags(id) & ADMIN_LEVEL_H))

?

Odpowiedz

  • +
  • -
GwynBleidD - zdjęcie GwynBleidD 26.02.2014

Masz 3 opcje

 

1. Zamiast sprawdzania flagi w jednym miejscu (pewnie w client_authorized to masz) i zapisywania do zmiennej czy gracz ma vipa, czy nie, sprawdzaj za każdym razem gdy VIP ma coś dostać itp. Opcja niezalecana z przyczyn optymalizacji.

 

2. Z client_authorized wydzielasz sprawdzanie do osobnej funkcji (jeśli masz już tak wydzielone to po kłopocie), oznaczasz tą funkcję jako public i w pluginie w którym "rozdajesz" VIPa wywołujesz tego publica jako forward (czyli rejestrujesz forward o takiej nazwie i go wywołujesz). Przykład:

public client_authorized(id) {
    authorize_vip(id)
}
public authorize_vip(id) {
    if (get_user_flags(id) & FLAGA_VIPA)
        vip[id] = true
}

 

3. Z client_authorized wydzielasz PRZYDZIELANIE vipa (jeśli masz już tak wydzielone to po kłopocie), oznaczasz ją jako public i wykonujesz jako forward gdy chcesz komuś VIPa przydzielić.

public client_authorized(id) {
    if (get_user_flags(id) & FLAGA_VIPA)
       vip_authorized(id)
}
public vip_authorized(id) {
    vip[id] = true
}

Zaleta tego sposobu jest taka, że nie musisz komuś przydzielać flagi, żeby mu dać VIPa, co musisz zrobić przy poprzednich dwóch. Działa więc dużo lepiej i ten polecam :)

Odpowiedz