Raised This Month: $32 Target: $400
 8% 

Problem VIP flags


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
Alexande
Member
Join Date: Feb 2020
Old 02-16-2020 , 10:56   Problem VIP flags
Reply With Quote #1

Hi guys , I've gota problem with the VIP flags.
I created 5 VIP ranks.

VIP Silver - bp
VIP Gold - bpq
VIP Diamond - bpqr
VIP Platinum - bpqrs
VIP ULTIMATE - bpqrst

If you have these flags you have benefits.
But me with the flags abcdefghijklmnopqrstu don't have any benefits , why shouldn't I have VIP ULTIMATE' s benefits?

If you need the plugin that is

PHP Code:
#include <amxmodx>
#include <amxmisc>
#include <engine>
#include <fakemeta>
#include <fun>
#include <cstrike>
#include <hamsandwich>

#define PLUGIN "VIP Benefits"
#define VERSION "0.9"

//#define USING_CREDITS - Scoateti comentariile in caz ca vreti sa primiti credite per kill

// Aici va puneti nativele cum le aveti voi
#if defined USING_CREDITS
    
native set_user_credits(idammount);
    
native get_user_credits(id);
#endif

enum eData {
    
Name[32],
    
Flags,
    
SpawnHP,
    
SpawnAP,
    
MoneyKill,
    
HpKill
    
ApKill,
    
Jumps
}

new 
g_iJumpsNum[33], g_iMaxJumps[33];
new 
bool:g_bIsJumping[33];

new 
bool:g_bHaveBenefits[33];
new 
g_iBenefitsNum 0;

new Array:
g_aBenefits;
public 
plugin_init()
{
    
register_plugin(PLUGINVERSION"FaTzZu" );
    
    
register_cvar("fr_benefits"VERSIONFCVAR_SERVER|FCVAR_SPONLY);
    
    
g_aBenefits ArrayCreate(eData);
    
    
RegisterHam(Ham_Spawn"player""HamPlayerSpawn"1);
    
RegisterHam(Ham_Player_Jump"player""hamPlayerJump"0)
    
    
register_event("DeathMsg""evDeathMsg""a");
    
    
register_clcmd("say /vips""cmdShowBenefits");
    
register_clcmd("say /beneficii""cmdShowRankBenefits");
    
    
set_task(120.0"taskShowMessage"___"b");
}
/* Plugin cfg */
public plugin_cfg()
{
    new 
szLineData[128], szName[32], szFlags[32], szSpawnHP[8], szSpawnAP[8], szMoneyPerKill[8], szHpPerKill[8], szApPerKill[8], szJumpsNum[8];
    new 
aData[eData]
    new 
szConfigsDir[128];
    
get_configsdir(szConfigsDircharsmax(szConfigsDir));
    
add(szConfigsDircharsmax(szConfigsDir), "/benefits.ini");
    
    if(!
file_exists(szConfigsDir))
    {
        
write_file(szConfigsDir";Numele flagului        Flagul            HP Spawn    AP Spawn    Money per kill        HP per Kill    Armor per Kill        Numar sarituri (1 = No multijump)");
        
write_file(szConfigsDir";Exemplu:");
        
write_file(szConfigsDir";^"VIP Diamond^"        ^"bcdefghijkt^"        ^"125^"        ^"150^"        ^"2000^"        ^"25^"        ^"50^"            ^"2^"");
    }
    
    new 
fopen(szConfigsDir"rt");
    if(!
f)
        return;
    
    while(!
feof(f))
    {
        
fgets(fszLineDatacharsmax(szLineData));
        
        if(
szLineData[0] == ';' || !szLineData[0]) 
            continue;
        
        
parse(szLineDataszNamecharsmax(szName), szFlagscharsmax(szFlags), szSpawnHPcharsmax(szSpawnHP), szSpawnAPcharsmax(szSpawnAP), szMoneyPerKillcharsmax(szMoneyPerKill), szHpPerKillcharsmax(szHpPerKill), szApPerKillcharsmax(szApPerKill), szJumpsNumcharsmax(szJumpsNum));
        
        
copy(aData[Name], charsmax(aData[Name]), szName);
        
aData[Flags] = read_flags(szFlags);
        
aData[SpawnHP] = str_to_num(szSpawnHP);
        
aData[SpawnAP] = str_to_num(szSpawnAP);
        
aData[MoneyKill] = str_to_num(szMoneyPerKill);
        
aData[HpKill] = str_to_num(szHpPerKill);
        
aData[ApKill] = str_to_num(szApPerKill);
        
        if(!
str_to_num(szJumpsNum))
            
aData[Jumps] = 1;
        else
            
aData[Jumps] = str_to_num(szJumpsNum);
        
        
ArrayPushArray(g_aBenefitsaData);
        
g_iBenefitsNum++;
    }
}
/* When client join to server */
public client_putinserver(id)
{
    new 
aData[eData];
    
    
g_bHaveBenefits[id] = false;
    
g_bIsJumping[id] = false;
    
g_iJumpsNum[id] = 0;
    
g_iMaxJumps[id] = 1
    
    for (new 
ig_iBenefitsNumi++)
    {
        
ArrayGetArray(g_aBenefitsiaData)
        
        if(
get_user_flags(id) == aData[Flags])
        {
            
g_bHaveBenefits[id] = true;
            
g_iMaxJumps[id] = aData[Jumps];
            break;
        }
    }    
}
/* Player Spawn ( Hamsandwich ) */
public HamPlayerSpawn(id)
{
    if(!
is_user_alive(id) || !g_bHaveBenefits[id])
        return;
    
    new 
aData[eData];
    
    for (new 
ig_iBenefitsNumi++)
    {
        
ArrayGetArray(g_aBenefitsiaData);
        
        if(
get_user_flags(id) == aData[Flags])
        {
            if(
aData[SpawnHP] > 0)
                
set_user_health(idaData[SpawnHP]);
            
            if(
aData[SpawnAP] > 0)
                
set_user_armor(idaData[SpawnAP]);
            
            break;
        }
    }
}
/* Event Death */
public evDeathMsg( )
{
    new 
iKiller read_data(1);
    new 
iVictim read_data(2);
    
    if(
iKiller == iVictim || !is_user_alive(iKiller) || !g_bHaveBenefits[iKiller])
        return;
    
    new 
aData[eData];
    
    for (new 
ig_iBenefitsNumi++)
    {
        
ArrayGetArray(g_aBenefitsiaData);
        
        if(
get_user_flags(iKiller) == aData[Flags])
        {
            
#if defined USING_CREDITS
                
set_user_credits(iKillerget_user_credits(iKiller) + aData[MoneyKill]);
            
#else
                
cs_set_user_money(iKillercs_get_user_money(iKiller) + aData[MoneyKill]);
            
#endif
            
            
set_user_health(iKillerget_user_health(iKiller) + aData[HpKill]);
            
set_user_armor(iKillerget_user_armor(iKiller) + aData[ApKill]);
            
            break;
        }
    }
}
/* Multijump - H.RED.ZONE Code */
public hamPlayerJump(id)
{
    if(!
is_user_alive(id)) 
    {
        return 
HAM_HANDLED;
    }
    
    if( 
pevidpev_flags ) & FL_WATERJUMP || pev(idpev_waterlevel) >= || !(get_pdata_int(id246) & IN_JUMP) )
    {
        return 
HAM_IGNORED
    
}
    
    if(
pevidpev_flags ) & FL_ONGROUND
    {
        
g_iJumpsNumid ] = 0;
        return 
HAM_IGNORED
    
}
    
    if( 
get_pdata_float(id251) < 500 && ++g_iJumpsNum[id] < g_iMaxJumps[id] ) 
    {
        new 
Float:fVelocity];
        
pevidpev_velocityfVelocity );
        
fVelocity] = 268.328157;
        
set_pevidpev_velocityfVelocity );
        
        return 
HAM_HANDLED
    
}
    
    return 
HAM_IGNORED    
}
/* Show Benefits Ranks */
public cmdShowRankBenefits(id)
{
    new 
menuszText[40], aData[eData];
    
menu menu_create("\w[ \yFurien Benefits \w] \rVIP's Ranks""benefitsMenuHandler");
    
    for (new 
ig_iBenefitsNumi++)
    {
        
ArrayGetArray(g_aBenefitsiaData);
        
        
formatex(szTextcharsmax(szText), "\y%s %s"aData[Name], get_user_flags(id) == aData[Flags] ? "\r*" "");
        
menu_additem(menuszText);
    }
    
    
menu_setprop(menuMPROP_EXITMEXIT_ALL);
    
menu_display(idmenu0);
}
public 
benefitsMenuHandler(idmenuitem)
{
    if(
item == MENU_EXIT)
    {
        
menu_destroy(menu);
        return 
PLUGIN_HANDLED;
    }
    
    
showDetailsMenu(iditem);
    
    
menu_destroy(menu);
    return 
PLUGIN_HANDLED;    
}
/* Show Benefits Ranks Details  */
public showDetailsMenu(iditem)
{
    new 
menuszText[64], aData[eData];
    
ArrayGetArray(g_aBenefitsitemaData);
    
    
formatex(szTextcharsmax(szText), "\w[ \yFurien Benefits \w] \r%s"aData[Name]);
    
menu menu_create(szText"detailsMenuHandler");
    
    
formatex(szTextcharsmax(szText), "\yHP Spawn: \r%d"aData[SpawnHP]);
    
menu_additem(menuszText);
    
    
formatex(szTextcharsmax(szText), "\yAP Spawn: \r%d"aData[SpawnAP]);
    
menu_additem(menuszText);
    
    
#if defined USING_CREDITS
        
formatex(szTextcharsmax(szText), "\yMoney per kill: \r%d \r$"aData[MoneyKill]);
        
menu_additem(menuszText);
    
#else
        
formatex(szTextcharsmax(szText), "\yCredits per kill: \r%d \r$"aData[MoneyKill]);
        
menu_additem(menuszText);    
    
#endif
    
    
formatex(szTextcharsmax(szText), "\yHP per kill: \r%d"aData[HpKill]);
    
menu_additem(menuszText);
    
    
formatex(szTextcharsmax(szText), "\yAP per kill: \r%d"aData[ApKill]);
    
menu_additem(menuszText);
    
    if(
aData[Jumps] > 1)
        
formatex(szTextcharsmax(szText), "\yMultijump: \rx%d"aData[Jumps]);
    else
        
formatex(szTextcharsmax(szText), "\yMultijump: \dNO");
    
menu_additem(menuszText);    
    
    
menu_setprop(menuMPROP_EXITMEXIT_ALL);
    
menu_display(idmenu0);
}
public 
detailsMenuHandler(idmenuitem)
{
    if(
item == MENU_EXIT)
    {
        
cmdShowRankBenefits(id)
        return 
PLUGIN_HANDLED;
    }
    
    
menu_destroy(menu);
    return 
PLUGIN_HANDLED;    
}
/* Show users with benefits */
public cmdShowBenefits(id)
{
    new 
iPlayers[32], iNumszMessage[128], contor;
    
get_players(iPlayersiNum);
    
    
formatex(szMessagecharsmax(szMessage), "!nBenefits ON: ");
    for(new 
i;i<iNum;i++)
    {
        new 
iPlayers[i];
        if(
g_bHaveBenefits[x]) 
        {
            new 
szName[32], szMsg[128];
            
get_user_name(xszNamecharsmax(szName));
            
formatex(szMsgcharsmax(szMsg), "!g%s!n,"szName);
            
add(szMessagecharsmax(szMessage), szMsg);
            
contor++;
        }
    }
    if(
contor)
    {
        
szMessage[strlen(szMessage)-1] = '.';
        
ColorChat(idszMessage);
    }
    else 
ColorChat(id"Nu sunt jucatori !gON !ncu !gbeneficii !npe server.");
}
/* V-as ruga sa pastrati mesajul :) */
public taskShowMessage()
{
    
ColorChat(0"!g[BENEFITS]!nAcest server utilizeaza !g%s !nversiunea !g%s !nby !gFaTzZu !n( !gKenWood !n) ."PLUGINVERSION)
}
/* Colorchat Stock */
stock ColorChat(const id,const input[], any:...) 
{
    new 
iNum 1iPlayers[32];
    static 
szMessage[191];
    
vformat(szMessagecharsmax(szMessage),input3);
    
    
replace_all(szMessagecharsmax(szMessage), "!g""^4");
    
replace_all(szMessagecharsmax(szMessage), "!n""^1");
    
replace_all(szMessagecharsmax(szMessage), "!t""^3");
    
    if(
idiPlayers[0] = id
    
else get_players(iPlayersiNum"ch");
    
    for(new 
0iNumi++) 
    {
        if(
is_user_connected(iPlayers[i]))
        {
            
message_begin(MSG_ONE_UNRELIABLEget_user_msgid("SayText"), _iPlayers[i]);
            
write_byte(iPlayers[i]);
            
write_string(szMessage);
            
message_end();
        }
    }
}
/* Plugin END */
public plugin_end()
{
    
ArrayDestroy(g_aBenefits);

Alexande is offline
OciXCrom
Veteran Member
Join Date: Oct 2013
Location: Macedonia
Old 02-16-2020 , 13:47   Re: Problem VIP flags
Reply With Quote #2

The plugin is checking if the user has the exact same flags using the "==" operator. Take a look at the "has_all_flags" function from "amxmisc" and use it in your code.
__________________
OciXCrom is offline
Send a message via Skype™ to OciXCrom
Alexande
Member
Join Date: Feb 2020
Old 02-16-2020 , 15:08   Re: Problem VIP flags
Reply With Quote #3

Quote:
Originally Posted by OciXCrom View Post
The plugin is checking if the user has the exact same flags using the "==" operator. Take a look at the "has_all_flags" function from "amxmisc" and use it in your code.
Can you modify it for me , please?
I am a begginer , I don't know very much.
Alexande is offline
OciXCrom
Veteran Member
Join Date: Oct 2013
Location: Macedonia
Old 02-16-2020 , 15:46   Re: Problem VIP flags
Reply With Quote #4

Quote:
Originally Posted by Alexande View Post
Can you modify it for me , please?
I am a begginer , I don't know very much.
Why did you post in this section then? This is not where you request someone else to do things for you, especially when you already posted the same thread in the correct section.
__________________
OciXCrom is offline
Send a message via Skype™ to OciXCrom
Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 05:58.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode