Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie

Jak dodac blokade na daną flage do wybranych funkcji


  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
1 odpowiedź w tym temacie

#1 Scotty

    Zaawansowany

  • Użytkownik

Reputacja: 24
Życzliwy

  • Postów:125
  • Lokalizacja:miasto
Offline

Napisano 09.04.2012 17:29

Witam, a więc jestem w trakcie tworzenia pluginu vip i mój problem polega na tym że nie bardzo wiem jak zablokować jego funkcje żeby działały tylko dla osób z daną flagą.

#include <amxmodx>
#include <codmod>
#include <csx>
#include <fun>
#include <colorchat>
#define PLUGIN "Vip Cod"
#define VERSION "1.0"
#define AUTHOR "Scotty"
#define MIN_PLAYERS 2
#define VIPS
#define FLAGA ADMIN_LEVEL_H
#define REKLAMA
#if defined VIPS
new maxplayers
#endif
new const gszPrefix[] = "^x01[^x03VIP^x01]";
new const msg[][] = { "podlozenie paki", "rozbrojenie paki", "uratowanie hosta" }
new cod_cvars[3];
new cod_cvar;
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)

register_message(get_user_msgid("SayText"),"handleSayText");

cod_cvar = register_cvar("cod_hs", "20000");

register_clcmd("say /vipinfo","ShowMotd");

register_logevent("logevent_przydziel", 3, "1=triggered");

cod_cvars[0] = register_cvar("cod_plantxp", "20000");
cod_cvars[1] = register_cvar("cod_defusxp", "20000");
cod_cvars[2] = register_cvar("cod_rescuxp", "10000");

register_event("DeathMsg", "eDeathMsg", "a")

#if defined VIPS
maxplayers = get_maxplayers()
register_clcmd("say /vips", "print_vips", 0);
register_clcmd("say /vipy", "print_vips", 0);
#endif

#if defined REKLAMA
set_task(60.0, "Reklamaa", 0,_,_,"b");
#endif
}
public handleSayText(id,msgId,msgDest,msgEnt)
{

new id = get_msg_arg_int(1);

if(!is_user_connected(id)) return PLUGIN_CONTINUE;
if(get_user_flags(id) & FLAGA)
{
new szTmp[256],szTmp2[256];
get_msg_arg_string(2,szTmp, charsmax( szTmp ) )
new szPrefix[64] = "^x01[^x03VIP^x01]";
if(!equal(szTmp,"#Cstrike_Chat_All")){
add(szTmp2,charsmax(szTmp2),szPrefix);
add(szTmp2,charsmax(szTmp2)," ");
add(szTmp2,charsmax(szTmp2),szTmp);
}
else{
add(szTmp2,charsmax(szTmp2),szPrefix);
add(szTmp2,charsmax(szTmp2),"^x03 %s1^x04 : %s2");
}
set_msg_arg_string(2,szTmp2);
}
return PLUGIN_CONTINUE;
}

public eDeathMsg(id)
{
if(!(get_user_flags(id) & FLAGA))
return PLUGIN_HANDLED;

new v_killer = read_data(1);
new v_victim = read_data(2);

if(v_killer && v_killer != v_victim)
{
cod_set_user_xp(v_killer,cod_get_user_xp(v_killer) + 20000);
}
return PLUGIN_HANDLED;
}
public client_death(killer, victim, wpnindex, hitplace, TK)
{
if(!(get_user_flags(killer) & FLAGA))
return PLUGIN_HANDLED;

if(get_user_team(victim) != get_user_team(killer))
{
new cod_hs = get_pcvar_num(cod_cvar);
if(hitplace == HIT_HEAD)
{
cod_set_user_xp(killer, cod_get_user_xp(killer) + cod_hs);
set_hudmessage(38, 218, 116, 0.50, 0.33, 1, 6.0, 4.0)
show_hudmessage(killer, "HEADSHOT^n +%i", cod_hs)
}
}
return PLUGIN_CONTINUE;
}
public logevent_przydziel(id)
{
new loguser[80], akcja[64], name[32];
read_logargv(0, loguser, 79);
read_logargv(2, akcja, 63);
parse_loguser(loguser, name, 31);

new id = get_user_index(name);
if(!(get_user_flags(id) & FLAGA))
return PLUGIN_HANDLED;
if(equal(akcja, "Planted_The_Bomb")) { PrzydzielExp(id, 0); }
else if(equal(akcja, "Defused_The_Bomb")) { PrzydzielExp(id, 1); }
else if(equal(akcja, "Rescued_A_Hostage")) { PrzydzielExp(id, 2); }

return PLUGIN_CONTINUE
}
public PrzydzielExp(id, typ)
{

new exp = get_pcvar_num(cod_cvars[typ]);

if(get_playersnum() >= MIN_PLAYERS)
{
if(!(get_user_flags(id) & FLAGA))
return PLUGIN_HANDLED;
{
cod_set_user_xp(id, cod_get_user_xp(id) + exp);
client_print(id, print_chat, "[VIP] Dostales %d doswiadczenia za %s.", exp, msg[typ]);
} }
return PLUGIN_CONTINUE
}
#if defined REKLAMA
public Reklamaa()
switch(random(3))
{
case 1: ColorChat(0, GREEN ,"%s Wpisz w say^x04 /vipinfo^x01 i zobacz jak byc^x01 VIP'em.",gszPrefix);
case 2: ColorChat(0, GREEN ,"%s Wpisz w say^x04 /vips^x01 i zobacz kto jest^x04 VIP'em.",gszPrefix);
case 3: ColorChat(0, GREEN ,"%s Wpisz w say^x04 /infovip^x01 i zobacz jak byc^x01 VIP'em.",gszPrefix);
}
#endif
public ShowMotd(id)
{
show_motd(id, "vip.txt","Informacje o Vipie");
}
#if defined VIPS
public print_vips(user)
{
new adminnames[33][32]
new message[256]
new id, count, x, len

for(id = 1 ; id <= maxplayers ; id++)
if(is_user_connected(id))
if(get_user_flags(id) & FLAGA)
get_user_name(id, adminnames[count++], 31)

len = format(message, 255, "^x04 VIPY ONLINE: ")
if(count > 0) {
for(x = 0 ; x < count ; x++) {
len += format(message[len], 255-len, "%s%s ", adminnames[x], x < (count-1) ? ", ":"")
if(len > 96 ) {
ColorChat(user, GREEN, "%s", message);
len = format(message, 255, "^x04 ")
}
}
ColorChat(user, GREEN, "%s", message);
}
else {
len += format(message[len], 255-len, "Brak Vipow ONLINE")

ColorChat(user, GREEN, "%s", message);
}


}
#endif


próbowałem już różne kombinacje z tym if(!(get_user_flags(id) & FLAGA)) ale cały czas bez flagi działa. Jedynie prefix się blokuje, ale to akurat było tu na forum. Co do poprawności napisanie pluginu to nie wiem nic bo to są po prostu wycinki z innych pluginów.

Liczę na szybką pomoc Pozdrawiam
  • +
  • -
  • 0

#2 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6 553
Godlike

  • Postów:11 976
  • GG:
  • Steam:steam
  • Imię:Rafał
  • Lokalizacja:Warszawa
Offline

Napisano 09.04.2012 17:41

http://amxx.pl/topic/60353-flagi/
  • +
  • -
  • 0




Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych