AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   [Help]How Do i Set X Class to T and Y Class To Ct (https://forums.alliedmods.net/showthread.php?t=163851)

2reason2kill 08-04-2011 05:18

[Help]How Do i Set X Class to T and Y Class To Ct
 
Is there a way That i Can Set Y Class For CT and X Class For T?

If it Is Can Someone Teach me It?

Doc-Holiday 08-05-2011 06:36

Re: [Help]How Do i Set X Class to T and Y Class To Ct
 
Please explain this better...

Questions to answer:
Displaying different classes to the teams or switching teams once player chooses a class?
Use of 2 menus one per team?

2reason2kill 08-05-2011 06:39

Re: [Help]How Do i Set X Class to T and Y Class To Ct
 
Quote:

Originally Posted by Doc-Holiday (Post 1526116)
Please explain this better...

Questions to answer:
Displaying different classes to the teams or switching teams once player chooses a class?
Use of 2 menus one per team?

I Dont Want A menu, I want To If a player is T He Get Class X and if Ct He Get class Y
I want To Do It Same as this Code But with Ct Classes and T Classes:oops:
PHP Code:

#include <amxmodx>
#include <hamsandwich>
#include <cstrike>
#include <nvault>

/* Check if player is a player:D */
#define IsPlayer(%1)    (1 <= %1 <= g_players) 

/* Times a player can write /xp ( To avoid spam! )*/
#define PrintTimes 3

/* Chat Prefix */
new const ChatPrefix[] = "HNS Ranks";

/* Change this to add more levels. 6 = 6 Levels. */
#define TOTALLEVELS 6

/* Edit here to add more levels. */
new const RANK[TOTALLEVELS] = 
{
    
50,
    
250
    
500
    
1000
    
1500,
    
2000
}

/* Name if player is unranked */
new const Level0[] = "Loser";

/* Edit here to add more levels. */
new const RANKNAMES[TOTALLEVELS][] =
{
    
"Noob",
    
"Beginner",
    
"Learning",
    
"Better",
    
"Soon pro",
    
"Pro"
}


new 
gXP[33], gLevel[33], iPrintXP[33];
new 
XP_KillXP_Hsg_vaultg_players;

public 
plugin_init()
{
    
register_plugin("XP-Ranking""1.0""nnajko");
 
    
/* This is when a player die or kill someone */
    
register_event("DeathMsg""eDeath""a");
    
    
/* When a player spawn FwdPlayerSpawn will be called */
    
RegisterHam(Ham_Spawn"player""FwdPlayerSpawn"1);
 
    
/* pCvars */
    
XP_Kill register_cvar("XP_per_kill""20");
    
XP_Hs register_cvar("XP_hs_bonus","10");
    
    
/* Get Maxplayers */
    
g_players get_maxplayers();
    
    
/* Chat Commands */
    
register_clcmd("say /xp""HideChat");
    
register_clcmd("say_team /xp""HideChat");
    
    
/* Save File Name */
    
g_vault nvault_open("HNSRANK");
}

public 
plugin_end()
{
    
nvault_close(g_vault);
}

public 
HideChat(id)
{
    if( 
IsPlayer(id) && is_user_alive(id) )
    {
        
ShowHud(id);
    }
    
    return 
PLUGIN_HANDLED;
}

public 
eDeath() 
{
    new 
killer read_data(1);
    new 
victim read_data(2);
    new 
gPrintMSG[100];
    new 
gXPKill get_pcvar_num(XP_Kill);
    new 
gXPHs get_pcvar_num(XP_Hs);
 
    if( 
IsPlayer(killer) && is_user_connected(killer) )
    {
        if( 
victim != killer )
        {
            if( 
cs_get_user_team(victim) != cs_get_user_team(killer) )
            {
                if( 
is_user_alive(killer) )
                {                    
                    if( !
read_data(3) )
                    {
                        
gXP[killer] += gXPKill
                        formatex
(gPrintMSGcharsmax(gPrintMSG), "You gained %d XP!"gXPKill);
                    }
                    else if( 
read_data(3) )
                    {
                        
gXP[killer] += (gXPKill gXPHs);
                        
formatex(gPrintMSGcharsmax(gPrintMSG), "You gained %d XP!^x01 (Headshot)", (gXPHs gXPKill));
                    }
    
                    Print(
killergPrintMSG);
                    
CheckLevel(killer);
                    
SaveData(killer);
                }
            }
        }
    }
    
    return 
PLUGIN_HANDLED;
}

public 
FwdPlayerSpawn(id)
{
    
iPrintXP[id] = 0;
}
        

public 
CheckLevel(id)
{
    if(
gXP[id] >= RANK[gLevel[id]])
    {
        
gLevel[id]++;
        Print(
id"^x01Congratulations!^x03 You are now a:^x01 %s^x03!"RANKNAMES[gLevel[id]]);
    }
}

public 
ShowHud(id)
{
    new 
iLevelName[100];
    if( 
gLevel[id] > )
    {
        
formatex(iLevelNamecharsmax(iLevelName), "%s"RANKNAMES[gLevel[id]]);
    }
    else 
    {
        
formatex(iLevelNamecharsmax(iLevelName), "%s"Level0);
    }
    
    if( 
iPrintXP[id] < PrintTimes )
    {
        new 
szName[33];
        
get_user_name(idszNamecharsmax(szName));
        Print(
0"^x01%s^x03 has:^x01 %d/%d XP^x03! Title:^x01 %s^x03!"szNamegXP[id], RANK[gLevel[id]], iLevelName);
        
iPrintXP[id]++;
    }
    else if( 
iPrintXP[id] >= PrintTimes )
    {
        Print(
id"You have printed your level maximum times this round!^x01 (%d)"PrintTimes);
    }
}

public 
client_connect(id)
{
    
LoadData(id);
}

public 
client_disconnect(id)
{
    
SaveData(id);
    
gXP[id] = 0;
    
gLevel[id] = 0;
}

public 
SaveData(id)
{
    new 
AuthID[35];
    
get_user_authid(id,AuthID,34);

    new 
vaultkey[64],vaultdata[256];
    
format(vaultkey,63,"%s-Mod"AuthID);
    
format(vaultdata,255,"%i#%i#",gXP[id],gLevel[id]);
    
nvault_set(g_vault,vaultkey,vaultdata);
    return 
PLUGIN_CONTINUE;
}

LoadData(id)
{
    new 
AuthID[35];
    
get_user_authid(id,AuthID,34);

    new 
vaultkey[64],vaultdata[256];
    
format(vaultkey,63,"%s-Mod",AuthID);
    
format(vaultdata,255,"%i#%i#",gXP[id],gLevel[id]);
    
nvault_get(g_vault,vaultkey,vaultdata,255);

    
replace_all(vaultdata255"#"" ");

    new 
playerxp[32], playerlevel[32];

    
parse(vaultdataplayerxp31playerlevel31);

    
gXP[id] = str_to_num(playerxp);
    
gLevel[id] = str_to_num(playerlevel);

    return 
PLUGIN_CONTINUE;

}

Print(
id, const sMsg[], any:...)
{
    static 
iid id get_Player();
    if ( !
) return;
    
    new 
sMessage[256];
    new 
len formatex(sMessagesizeof(sMessage) - 1"^x04[%s]^x03 "ChatPrefix);
    
vformat(sMessage[len], sizeof(sMessage) - lensMsg3);
    
sMessage[192] = '^0';
        
    static 
msgid_SayText;
    if ( !
msgid_SayText msgid_SayText get_user_msgid("SayText");
    
    new const 
team_Names[][] =
    {
        
"",
        
"TERRORIST",
        
"CT",
        
"SPECTATOR"
    
};
        
    new 
sTeam get_user_team(i);
    
    
team_Info(iidteam_Names[0]);
        
    
message_begin(id MSG_ONE_UNRELIABLE MSG_BROADCASTmsgid_SayText_id);
    
write_byte(i);
    
write_string(sMessage);
    
message_end();
        
    
team_Info(iidteam_Names[sTeam]);
}

team_Info(receiversendersTeam[])
{
    static 
msgid_TeamInfo;
    if ( !
msgid_TeamInfo msgid_TeamInfo get_user_msgid("TeamInfo");
    
    
message_begin(sender MSG_ONE_UNRELIABLE MSG_BROADCASTmsgid_TeamInfo_sender);
    
write_byte(receiver);
    
write_string(sTeam);
    
message_end();
}

get_Player()
{
    for ( new 
id 1id <= get_maxplayers(); id++ )
    {
        return 
id;
    }
    
    return 
0;



Doc-Holiday 08-05-2011 07:06

Re: [Help]How Do i Set X Class to T and Y Class To Ct
 
Create 2 classes form the original and on player spawn Assign them a class whith a check for team.

if(get_user_team(id) == 2)
//Assign ct class

Then search and find hooking client info changed so that you can reset players class when he changes teams so it can be assigned to him on spawn again :)

hopefully this helps.

2reason2kill 08-05-2011 07:37

Re: [Help]How Do i Set X Class to T and Y Class To Ct
 
Quote:

Originally Posted by Doc-Holiday (Post 1526136)
Create 2 classes form the original and on player spawn Assign them a class whith a check for team.

if(get_user_team(id) == 2)
//Assign ct class

Then search and find hooking client info changed so that you can reset players class when he changes teams so it can be assigned to him on spawn again :)

hopefully this helps.

Can U show Me with an example?

:mrgreen:

Doc-Holiday 08-05-2011 16:54

Re: [Help]How Do i Set X Class to T and Y Class To Ct
 
Quote:

Originally Posted by 2reason2kill (Post 1526150)
Can U show Me with an example?

:mrgreen:


search for catching teaminfo....

for hooking spawn and checking team you should know how to do that... then its just

g_iPlayerClass == CLASS_CT or w/e you have the class name.

2reason2kill 08-05-2011 16:55

Re: [Help]How Do i Set X Class to T and Y Class To Ct
 
Quote:

Originally Posted by Doc-Holiday (Post 1526529)
search for catching teaminfo....

for hooking spawn and checking team you should know how to do that... then its just

g_iPlayerClass == CLASS_CT or w/e you have the class name.

Okay, i will try.

thank you.

2reason2kill 08-06-2011 05:39

Re: [Help]How Do i Set X Class to T and Y Class To Ct
 
Quote:

Originally Posted by Doc-Holiday (Post 1526529)
search for catching teaminfo....

for hooking spawn and checking team you should know how to do that... then its just

g_iPlayerClass == CLASS_CT or w/e you have the class name.

I made This But It Didnt Work :/
Can you tell me watch Wrong?
PHP Code:

public RoundStart(id)
{
    if(
is_user_connected(id))
    {
        switch(
cs_get_user_team(id))
        {
            case 
CS_TEAM_CT:
            {
                
PlayerClass[id] == CLASS_SpeedKnifer;
            }
            case 
CS_TEAM_T:
            {
                
PlayerClass[id] == CLASS_HighGravity;
            }
        }
    }



abdul-rehman 08-06-2011 06:32

Re: [Help]How Do i Set X Class to T and Y Class To Ct
 
Quote:

Originally Posted by 2reason2kill (Post 1526838)
I made This But It Didnt Work :/
Can you tell me watch Wrong?
PHP Code:

public RoundStart(id)
{
    if(
is_user_connected(id))
    {
        switch(
cs_get_user_team(id))
        {
            case 
CS_TEAM_CT:
            {
                
PlayerClass[id] == CLASS_SpeedKnifer;
            }
            case 
CS_TEAM_T:
            {
                
PlayerClass[id] == CLASS_HighGravity;
            }
        }
    }



Show full code, i m pretty sure round start event doesnt pass a player id, so you have to loop through all of them.

2reason2kill 08-06-2011 08:32

Re: [Help]How Do i Set X Class to T and Y Class To Ct
 
Quote:

Originally Posted by abdul-rehman (Post 1526866)
Show full code, i m pretty sure round start event doesnt pass a player id, so you have to loop through all of them.

This Code Was My First So The Code will Be Ugly...

PHP Code:

#pragma semicolon 1

#include <amxmodx>
#include <amxmisc>
#include <nvault>
#include <fun>
#include <hamsandwich>
#include <cstrike>
#include <engine>

#define MAXCLASSES 3
#define PREFIX "[Knife Mod]"

enum {
    
PLAYERLEVEL_1,
    
PLAYERLEVEL_2,
    
PLAYERLEVEL_3// How many Levels
    
PLAYERLEVEL_4,
    
PLAYERLEVEL_5,
    
PLAYERLEVEL_6,
    
PLAYERLEVEL_7,
    
PLAYERLEVEL_8,
    
PLAYERLEVEL_9,
    
PLAYERLEVEL_10
}
enum {
    
CLASS_None 0,
    
CLASS_SpeedKnifer,
    
CLASS_HighGravity
}


new 
teleport_counter;
new 
Float:g_lastusetime[33];

new 
pcv_teleport_cooldown;

new 
BubbleSprite;


new const 
CLASSES[MAXCLASSES][] = {
    
"None",
    
"Speed Knifer",
    
"High Gravity"

};

new const 
LEVELS[10] = {
    
0
    
200
    
400
    
800,
    
1600,
    
3200,
    
5400,
    
6400,
    
7950,
    
10000
    
};

new 
PlayerXP[33], PlayerLevel[33], PlayerClass[33];
new 
gCvar_KillgCvar_KnifegCvar_HSgCvar_Enableg_Vault;
new 
bool:NewClass[33];

public 
plugin_init() {
    
register_plugin("Knife Mod""1.0""2Reason2Kill");
    
    
RegisterHam(Ham_Spawn"player""fwdPlayerSpawn"1);

    
register_event("DeathMsg""eDeath""a");
    
register_event("ResetHUD""skill""be"); 
    
register_logevent("RoundStart"2"1=RoundStart");

    
gCvar_Enable    register_cvar("xp_save""1");
    
gCvar_Kill    register_cvar("xp_per_kill""20");
    
gCvar_HS    register_cvar("xp_hs_bonus""20");
    
gCvar_Knife    register_cvar("xp_Knife_bonus""20");
    
g_Vault        nvault_open("animod");
   
    
    
pcv_teleport_cooldown register_cvar("xp_teleport_cooldown""10");
    
    
register_concmd("amx_take_exp""cmd_take_exp"ADMIN_KICK"<target> <amount>"); 
    
register_concmd("amx_give_exp""cmd_give_exp"ADMIN_KICK"<target> <amount>");
    
    
register_clcmd("say Changeclass",    "ChangeClass");
    
register_clcmd("say_team Changeclass""ChangeClass");
    
register_clcmd("say xp",    "ShowHud");
    
register_clcmd("say_team /xp",    "ShowHud");
    
register_clcmd("say class",    "ChangeClass");
    
register_clcmd("say_team /class""ChangeClass");
    
register_clcmd("say exp",    "ShowHud");
    
register_clcmd("say_team /exp",    "ShowHud");
    
register_clcmd("jump""ActivateTeleport");
    
register_event("CurWeapon""event_curweap on""be""1=1");
    
register_clcmd("/help""Help");
}
public 
plugin_precache()
{
    
precache_sound("warcraft3/blinkarrival.wav");
    
    
BubbleSprite precache_model("sprites/blueflare2.spr");
}

public 
fwdPlayerSpawn(id)
{
    if(
NewClass[id])
    {
        
ShowMenu(id);
    }
    else
    {
        
ShowHud(id);
        
skill(id);
    }
}

public 
Help(id)
{
    
show_motd(id"Help.txt" "How To Play?");
}

public 
eDeath()
{
    new 
attacker read_data);
    new 
headshot read_data);
    new 
clipammoweapon get_user_weapon(attackerclipammo);

    
PlayerXP[attacker] += get_pcvar_num(gCvar_Kill);

    if(
headshot)
        
PlayerXP[attacker] += get_pcvar_num(gCvar_HS);

    if(
weapon == CSW_KNIFE)
        
PlayerXP[attacker] += get_pcvar_num(gCvar_Knife);

    
ShowHud(attacker);
    
SaveData(attacker);
    
    
CheckLevel(attacker);
}

public 
CheckLevel(id)
{
    while(
PlayerXP[id] >= LEVELS[PlayerLevel[id]])
    {
        
PlayerLevel[id] += 1;
        if(
PlayerLevel[id] != 1)
        {
            
client_printidprint_chat"%s Congratulations! You are a level %i %s!"PREFIXPlayerLevel[id], CLASSES[PlayerClass[id]]);
        }
    }
    
    
ShowHud(id);
}

public 
ShowHud(id)
{
    
set_hudmessage(255000.750.0106.015.0);
    
show_hudmessage(id"Level: %i^nXP: %i^nClass: %s"PlayerLevel[id], PlayerXP[id], CLASSES[PlayerClass[id]]);
}

public 
ChangeClass(id)
{
    if(
is_user_alive(id))
    {
        
NewClass[id] = true;
        
client_printidprint_chat"%s You can choose a new class upon spawn."PREFIX);
    }
    else
    {
        
ShowMenu(id);
    }

    return 
PLUGIN_CONTINUE;
}

public 
ShowMenu(id)
{
    new 
menu menu_create("Class Menu" "Class_Handle");
    
menu_additem(menu ,"Speed Knifer""1" 0);
    
menu_additem(menu ,"Hige Gravity""2" 0);
    
menu_additem(menu ,"Jumper""3" 0);
    
menu_additem(menu ,"High HP""4" 0);

    
menu_setprop(menu MPROP_EXIT MEXIT_ALL);
    
menu_display(id menu 0);

    return 
PLUGIN_CONTINUE;
}

public 
Class_Handle(id menu item)  {
    if(
item == MENU_EXIT
        
menu_destroy(menu);

    new 
szCommand[6] , szName[64];
    new 
access callback;

    
menu_item_getinfo(menu item access szCommand szName 63 callback);

    new 
str_to_num(szCommand);
    if(
PlayerClass[id] != i
    {
        
PlayerClass[id] = i;
    
        
client_printidprint_chat"%s You are now a %s"PREFIXCLASSES[i]);
    

    } 
    else
    {
        
client_printidprint_chat"%s You are already a %s"PREFIXCLASSES[i]);
    }
    
    
ShowHud(id);
    
CheckLevel(id);
    
NewClass[id] = false;
    
menu_destroy(menu);
    return 
PLUGIN_CONTINUE;
}

public 
client_connect(id)
{
    if(
get_pcvar_num(gCvar_Enable) == 1)
        
LoadData(id);
        
    
NewClass[id] = true;
}

public 
client_disconnect(id)
{
    if(
get_pcvar_num(gCvar_Enable) == 1)
        
SaveData(id);

    
PlayerXP[id]    = 0;
    
PlayerLevel[id]    = 0;
    
PlayerClass[id]    = 0;
}

public 
SaveData(id) {
    new 
AuthID[35];
    
get_user_authid(idAuthID34);
    
    new 
vaultkey[64], vaultdata[256];
    
format(vaultkey63"%s-Mod"AuthID);
    
format(vaultdata255"%i#%i#"PlayerXP[id], PlayerLevel[id]);
    
nvault_set(g_Vaultvaultkeyvaultdata);
    return 
PLUGIN_CONTINUE;
}

public 
LoadData(id) {
    new 
AuthID[35];
    
get_user_authid(id,AuthID,34);
    
    new 
vaultkey[64], vaultdata[256];
    
format(vaultkey63"%s-Mod"AuthID);
    
format(vaultdata255"%i#%i#"PlayerXP[id], PlayerLevel[id]);
    
nvault_get(g_Vaultvaultkeyvaultdata,255);

    
replace_all(vaultdata255"#"" ");

    new 
playerxp[32], playerlevel[32];

    
parse(vaultdataplayerxp31playerlevel31);

    
PlayerXP[id] = str_to_num(playerxp);
    
PlayerLevel[id] = str_to_num(playerlevel);

    return 
PLUGIN_CONTINUE;
}

// Give/Take XP addaon by [X]-RayCat
public cmd_give_expidlevel,cid ) {
    if( ! 
cmd_access idlevelcid) )
        return 
PLUGIN_HANDLED;

    new 
target[32], amount[21], reason[21];

    
read_argv1target31 );
    
read_argv(2amount20 );
    
read_argv3reason20 );

    new 
player cmd_targetidtarget);

    if( ! 
player 
        return 
PLUGIN_HANDLED;

    new 
admin_name[32], player_name[32];
    
get_user_nameidadmin_name31 );
    
get_user_nameplayerplayer_name31 );

    new 
expnum str_to_numamount );

    
PlayerXP[player] += expnum;

    switch( 
get_cvar_num "amx_show_activity" ) ) 
    {
        case 
1client_print0print_chat"ADMIN: gave %i points for %s."expnumplayer_name );
        case 
2client_print0print_chat"ADMIN %s: gave %i points for %s."admin_nameexpnumplayer_name );
    }

    
client_printplayerprint_chat"[%s] You received %i points. (Total: %d)"PREFIXexpnumPlayerXP[player] );
    
SaveDataid );

    return 
PLUGIN_CONTINUE;
}
 
public 
cmd_take_expidlevel,cid ) {
    if( ! 
cmd_access idlevelcid) )
       return 
PLUGIN_HANDLED;

    new 
target[32], amount[21], reason[21];

    
read_argv1target31 );
    
read_argv2amount20 );
    
read_argv3reason20 );

    new 
player cmd_targetidtarget);

    if( ! 
player 
       return 
PLUGIN_HANDLED;

    new 
admin_name[32], player_name[32];
    
get_user_nameidadmin_name31 );
    
get_user_nameplayerplayer_name31 );

    new 
expnum str_to_numamount );

    
PlayerXP[player] -= expnum;

    switch(
get_cvar_num("amx_show_activity"))
    {
        case 
1client_print0print_chat"ADMIN: took %i points from %s."expnumplayer_name );
        case 
2client_print0print_chat"ADMIN %s: took %i points from %s."admin_nameexpnumplayer_name );
    }

    
client_printplayerprint_chat"%s You lost %i points. (Total: %d)"PREFIXexpnumPlayerXP[player] );
    
SaveDataid );

    return 
PLUGIN_CONTINUE;
}  
public 
skill(id)
{
    if(!
is_user_alive(id))
        return 
0;
    

    if (
PlayerClass[id] == CLASS_HighGravity)
    {
        switch(
PlayerLevel[id])
        {
            case 
1,2
            {
                
//Level 1 and 2
                
set_user_gravity(id0.75);
            }
            case 
3
            {
                
//Level 3
                
set_user_gravity(id0.6875);
            }
            case 
10:
            {
            
                
//Level 4
                
set_user_gravity(id0.1);
            }
        }
    }
    
    if (
PlayerClass[id] == CLASS_SpeedKnifer)
    {
        switch(
PlayerLevel[id])
        {
            case 
5:
            {
                
set_user_maxspeed(id Float:300.0);
            }
            case 
10:
            
set_user_rendering(idkRenderFxGlowShell000kRenderTransAlpha0); 
            }
            
        }
    
    
    return 
1;
}
public 
RoundStart(id)
{
    if(
is_user_connected(id))
    {
        switch(
cs_get_user_team(id))
        {
            case 
CS_TEAM_CT:
            {
                
PlayerClass[id] == CLASS_SpeedKnifer;
            }
            case 
CS_TEAM_T:
            {
                
PlayerClass[id] == CLASS_HighGravity;
            }
        }
    }




All times are GMT -4. The time now is 03:27.

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