AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   Respawn chance help (https://forums.alliedmods.net/showthread.php?t=146503)

mammapappa 12-28-2010 16:31

Respawn chance help
 
i'm making a new mod for my server but when i try to add respawn i get an error

PHP Code:

/* Plugin generated by AMXX-Studio */

/* EDIT HERE */

/* Dont forget the: "" On names and shorts! */

#define HEALTH_NAME        "Extra Health"
#define HEALTH_COST        1000
#define HEALTH_SHORT        "HP"
#define HEALTH_VALUE        150
#define HEALTH_LEVELS        6

#define ARMOR_NAME        "Armor"
#define ARMOR_COST        750
#define ARMOR_SHORT        "AP"
#define ARMOR_VALUE        100
#define ARMOR_LEVELS        4

#define RESPAWN_NAME        "Respawn Chance"
#define RESPAWN_COST        3000
#define RESPAWN_SHORT        "RC"
#define RESPAWN_VALUE        80
#define RESPAWN_LEVELS        8

/*--------------------------------------------*/
/*        PLUGIN STARTS HERE           */
/*        DO NOT MODIFY BELOW!          */
/*--------------------------------------------*/

#include <amxmodx>
#include <amxmisc>
#include <hamsandwich>
#include <fun>
#include <cstrike>
#include <nvault>
#include <nvault_util>
#include <hnsxp>

new const PLUGIN_NAME[] = "HNS YenMod"
new const PLUGIN_VERSION[] = "1.0.0"
new const PLUGIN_CREATOR[] = "MaNiax"
new const PLUGIN_PREFIX[] = "YenMod"

enum _:gItems
{
    
HEALTH,
    
ARMOR,
    
RESPAWN
}

new const 
g_iItems[gItems][] =
{
    
HEALTH_NAME,
    
ARMOR_NAME,
    
RESPAWN_NAME
}

new const 
gItemsCost[gItems] =
{
    
HEALTH_COST,
    
ARMOR_COST,
    
RESPAWN_COST
}

new const 
gItemsShort[gItems][] =
{
    
HEALTH_SHORT,
    
ARMOR_SHORT,
    
RESPAWN_SHORT
}

new const 
gItemsValue[gItems] =
{
    
HEALTH_VALUE,
    
ARMOR_VALUE,
    
RESPAWN_VALUE
}

new const 
gItemsLevels[gItems] =
{
    
HEALTH_LEVELS,
    
ARMOR_LEVELS,
    
RESPAWN_LEVELS
}

new 
gLevel[33][gItems];
new 
gXP[33], gXPTotal[33];
/* pCvars */
new gKillXPgHsXP;

/* Others */
new g_players;

/* Vault */
new g_vaultgTopVaultgNameVault;

new 
bool:g_iRevivedOnce[32];

public 
plugin_init() 
{
    
register_plugin(PLUGIN_NAMEPLUGIN_VERSIONPLUGIN_CREATOR);
    
    
RegisterHam(Ham_Spawn"player""FwdPlayerSpawn"1);
    
    
register_event("DeathMsg""eDeath""a")
    
    
register_clcmd("say /ym""MainMenu");
    
register_clcmd("say /ymrank""CmdRank");
    
register_clcmd("say /ymtop""CmdTop");
    
register_clcmd("say /ymtop10""CmdTop");
    
register_clcmd("say /ymtop15""CmdTop");
    
    
//Register Commands
    
register_concmd("ym_give_yen""CmdGiveCash"ADMIN_RCON"<nick, #userid, authid> <cash>");
    
register_concmd("ym_remove_yen""CmdRemoveCash"ADMIN_RCON"<nick, #userid, authid> <cash>");
    
    
gKillXP register_cvar("hnsyen_killxp""40");
    
gHsXP register_cvar("hnsyen_hsxp""50");
    
    
g_vault nvault_open("HNSYenMod");
    
gTopVault nvault_open("HNSYenModTop")
    
gNameVault nvault_open("HNSYenModName")
}

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

public 
client_disconnect(id)
{
    
Save(id);
}

//The following functions are used to give and remove, dont touch!
public CmdGiveCash(idlevelcid)
{
    if( !
cmd_access(idlevelcid3) ) return PLUGIN_HANDLED;
    
    static 
arg[35];
    
read_argv(1argsizeof(arg) - 1);
    
    new 
target cmd_target(idargCMDTARGET_NO_BOTS);
    if( !
target ) return PLUGIN_HANDLED;
    
    
read_argv(2argsizeof(arg) - 1);
    new 
CASH str_to_num(arg);
    
    if( 
CASH <= )
    {
        
console_print(id"Not enough yen!");
        if( 
CASH )
        {
            
console_print(id"Use ym_remove_yen instead!");
        }
        return 
PLUGIN_HANDLED;
    }
    
    if( 
CASH >= 99999 )
    {
        
console_print(id"To much yen!");
        return 
PLUGIN_HANDLED;
    }
    
    
gXP[target] += CASH;
    
gXPTotal[target] += CASH;
    
    static 
name[2][32];
    
get_user_name(idname[0], sizeof(name[]) - 1);
    
get_user_name(targetname[1], sizeof(name[]) - 1);
    
    
client_print(idprint_console"%s You gave %s %i yen!"PLUGIN_PREFIXname[1], CASH);
    
    static 
steamid[2][35];
    
get_user_authid(idsteamid[0], sizeof(steamid[]) - 1);
    
get_user_authid(targetsteamid[1], sizeof(steamid[]) - 1);
    
    
log_amx("%s (%s) gave %i yen to %s (%s)"name[0], steamid[0], CASHname[1], steamid[1]);
    
    return 
PLUGIN_HANDLED;
}

public 
CmdRemoveCash(idlevelcid)
{
    if ( !
cmd_access(idlevelcid3) ) return PLUGIN_HANDLED;
    
    static 
arg[35];
    
read_argv(1argsizeof(arg) - 1);
    
    new 
target cmd_target(idargCMDTARGET_OBEY_IMMUNITY|CMDTARGET_NO_BOTS|CMDTARGET_ALLOW_SELF);
    if( !
target ) return PLUGIN_HANDLED;
    
    
read_argv(2argsizeof(arg) - 1);
    new 
Cash str_to_num(arg);
    
    if ( 
Cash <= ) return PLUGIN_HANDLED;
    
gXP[target] -= Cash;
    
gXPTotal[target] -= Cash;
    
    new 
t_name[60];
    
get_user_name(targett_name59);

    
client_print(idprint_console"%s You removed %i yen from %s!"PLUGIN_PREFIXCasht_name);
    
    return 
PLUGIN_CONTINUE;
}

public 
MainMenu(id)
{
    new 
title[100]; 
    
formatex(titlecharsmax(title), "\r[YM] \yHNS YenMod^n\wCurrent Yen: \r%i \y| \wTotal Yen: \r%i"gXP[id], gXPTotal[id]);    
    new 
menu menu_create(title"MainMenu_Handle");
    
    new 
iNumber[5], gPriceszItemNumber[100], Amount;
    
    for( new 
iItem 0iItem gItemsiItem++ )
    {
        
num_to_str(iItemiNumber4);
        
gPrice gItemsCost[iItem] * (gLevel[id][iItem] + 1);
        
Amount gItemsValue[iItem] * (gLevel[id][iItem] + 1) / gItemsLevels[iItem];
        
        if( 
gLevel[id][iItem] >= gItemsLevels[iItem] )
        {
            
formatex(szItemNumbercharsmax(szItemNumber), "\d%s: \wMax Level! \r(\w%i %s\r)"g_iItems[iItem], gItemsValuegItemsShort[iItem]);
        }
        else if( 
gXP[id] < gPrice )
        {
            
formatex(szItemNumbercharsmax(szItemNumber), "\d%s: \wLevel %i \r(\w%i %s\r) \y$%i"g_iItems[iItem], (gLevel[id][iItem] + 1), AmountgItemsShort[iItem], gPrice);
        }
        else if( 
gLevel[id][iItem] < gItemsLevels[iItem] )
        {
            
formatex(szItemNumbercharsmax(szItemNumber), "\w%s: Level %i \r(\w%i %s\r) \y$%i"g_iItems[iItem], (gLevel[id][iItem] + 1), AmountgItemsShort[iItem], gPrice);
        }
        
        
menu_additem(menuszItemNumberiNumber);
    }
    
    
menu_display(idmenu0);
    
    return 
PLUGIN_HANDLED;
}

public 
MainMenu_Handle(idmenuitem)
{
    if( 
item == MENU_EXIT )
    {
        
menu_destroy(menu);
        return 
PLUGIN_HANDLED;
    }
    
    new 
data[6], iName[64], accesscallback;
    
menu_item_getinfo(menuitemaccessdatacharsmax(data), iNamecharsmax(data), callback);
    
    new 
gPriceLevel;
    new 
key str_to_num(data);
    
Level gLevel[id][key] + 1;
    
gPrice gItemsCost[key] * Level;

    if( 
gLevel[id][key] == gItemsLevels[key] )
    {
        
MainMenu(id);
        return 
PLUGIN_HANDLED;
    }
    else if( 
gXP[id] < gPrice )
    {
        
MainMenu(id);
        return 
PLUGIN_HANDLED;
    }    
    else
    {
        
gXP[id] -= gPrice;
        
gLevel[id][key] += 1;
        Print(
id"You bought^x01 %s Level: %i^x03!"g_iItems[key], Level);
    }
    
    
MainMenu(id);
    return 
PLUGIN_HANDLED;
}

public 
CmdRank(id)
{
    new Array:
aNames, Array:aSteamIDs, Array:aXPs;
    new 
iTotal SortTopPlayers(aNamesaSteamIDsaXPs);
    
    new 
szSteamID[35];
    
get_user_authid(idszSteamIDcharsmax(szSteamID));
    
    new 
szSteamID2[35], i;
    for( 
0iTotali++ )
    {
        
ArrayGetString(aSteamIDsiszSteamID2charsmax(szSteamID2));
        
        if( 
equal(szSteamIDszSteamID2) )
        {
            Print(
id"You are ranked^x01 %i^x03 of^x01 %i^x03!", (1), iTotal);
            break;
        }
    }
    
    if( 
== iTotal )
    {
        Print(
id"You are not ranked!");
    }
    
    
ArrayDestroy(aNames);
    
ArrayDestroy(aSteamIDs);
    
ArrayDestroy(aXPs);
    
    return 
PLUGIN_HANDLED;
}

public 
CmdTop(id)
{
    new Array:
aNames, Array:aSteamIDs, Array:aXPs;
    new 
iTotal SortTopPlayers(aNamesaSteamIDsaXPs);
    
    new 
szHTML[2500], iLen;
    
iLen copy(szHTMLcharsmax(szHTML), "<html><body><h2>YenMod Top 15</h2><br><table><tr><th>#.</th><th>Name</th><th>XP</th></tr>");
    
    new 
szName[156];
    for( new 
015i++ )
    {
        if( 
iTotal )
        {
            
ArrayGetString(aNamesiszNamecharsmax(szName));
            
replace_all(szNamecharsmax(szName), "&""&amp;");
            
replace_all(szNamecharsmax(szName), "<""&lt;");
            
replace_all(szNamecharsmax(szName), ">""&gt;");
            
            
iLen += formatex(szHTML[iLen], charsmax(szHTML)-iLen"<tr><td>%i.</td><td>%s</td><td>%i</td></tr>", (1), szNameArrayGetCell(aXPsi));
        }
        else
        {
            
iLen += copy(szHTML[iLen], charsmax(szHTML)-iLen"<tr><td></td><td></td><td></td></tr>");
        }
    }
    
    
iLen += copy(szHTML[iLen], charsmax(szHTML)-iLen"</table></body></html>");
    
    
ArrayDestroy(aNames);
    
ArrayDestroy(aSteamIDs);
    
ArrayDestroy(aXPs);
    
    
show_motd(idszHTML"Top 15");
    
    return 
PLUGIN_HANDLED;
}

public 
eDeath() 
{
    new 
killer read_data(1);
    new 
victim read_data(2);
    new 
gPrintMSG[100];
    new 
gXPKill get_pcvar_num(gKillXP);
    new 
gXPHs get_pcvar_num(gHsXP);
 
    if( 
XPReady(victimkiller) )
    {
        if( !
read_data(3) )
        {
            
gXP[killer] += gXPKill;
            
gXPTotal[killer] += gXPKill;
            
formatex(gPrintMSGcharsmax(gPrintMSG), "You gained %d XP!"gXPKill);
        }
        else if( 
read_data(3) )
        {
            
gXP[killer] += (gXPKill gXPHs);
            
gXPTotal[killer] += (gXPKill gXPHs);
            
formatex(gPrintMSGcharsmax(gPrintMSG), "You gained %d XP!^x01 (Headshot)", (gXPHs gXPKill));
        }
            
        Print(
killergPrintMSG);
        
Save(killer);
    }
    
    return 
PLUGIN_HANDLED;


public 
FwdPlayerDeath(idKillerShouldgib)
{
    
//If the player hasnt already been respawned
    
if( !g_iRevivedOnce[id] )
    {
        new 
percent gItemsLevels[id][RESPAWN_LEVELS], gItemsLevels[RESPAWN_LEVELS], gItemsValue[RESPAWN_VALUE];
        if( 
percent && (percent >= 100 || random_num(1100) <= percent) )
        {
            
//Set respwan in 1 second
            
set_task(1.0"Task_Respawn"id);
        }
    }
}

public 
Task_Respawn(iPlayer)
{
    
//Respawn Player
    
ExecuteHamB(Ham_CS_RoundRespawniPlayer);
    
    
//Print to the player that he/she got respawned
    
Print(iPlayer"^x03You got respawned!");
    
    
//Disable respawn until next round
    
g_iRevivedOnce[iPlayer] = true;
}

public 
FwdPlayerSpawn(id)
{
    if( 
is_user_alive(id) )
    {
        if( 
gLevel[id][HEALTH] > )
        {
            new 
gHP HEALTH_VALUE HEALTH_LEVELS gLevel[id][HEALTH];
            
set_user_health(idget_user_health(id) + gHP);
        }
        
        if( 
gLevel[id][ARMOR] > )
        {
            new 
gAP ARMOR_VALUE ARMOR_LEVELS gLevel[id][ARMOR];
            
            if( 
gAP )
            {
                
cs_set_user_armor(idgAPCS_ARMOR_KEVLAR);                
            }
            else if( 
gAP >= 100 )
            {
                
cs_set_user_armor(idgAPCS_ARMOR_VESTHELM);
            }
        }
    }
}

public 
eRound_start()
{
    
//Bunc of variables
    
new iPlayers[32], iNumiPid;
    
    
//Get all players
    
get_playersiPlayersiNum"a" );
    
    
//Browse through all players
    
for( new iiNumi++ )
    {
        
iPid iPlayers[i];
        
        
//Enable respawn
        
g_iRevivedOnce[iPid] = false;
    }
}

public 
Save(id)
{
    static 
data[256];
    new 
len formatex(datasizeof(data) - 1"%i"gXP[id]);
    new 
gAuthID[32];
    
get_user_authid(idgAuthIDcharsmax(gAuthID));
    
    for( new 
iItem 0iItem gItemsiItem++ )
    {
        
len += formatex(data[len], sizeof(data) - len 1" %i"gLevel[id][iItem]);
    }
    
    
nvault_set(g_vaultgAuthIDdata);
    
    
/* For TotalXP Top */
    
new vaultdata[11]; 
    
formatex(vaultdata10"%i"gXPTotal[id]);
    
nvault_set(gTopVaultgAuthIDvaultdata);
    
    new 
szName[32];
    
get_user_name(idszName31);
    
nvault_set(gNameVaultgAuthIDszName);
}

public 
Load(id)
{
    static 
data[256], timestamp;
    new 
gAuthID[32];
    
get_user_authid(idgAuthIDcharsmax(gAuthID));
    if( 
nvault_lookup(g_vaultgAuthIDdatasizeof(data) - 1timestamp) )
    {
        
ParseLoadData(iddata);
    }
    else
    {
        Print(
id"First time here...");
    }
    
    
/* For TotalXP Top */
    
gXPTotal[id] = nvault_get(gTopVaultgAuthID);
    
}

ParseLoadData(iddata[256])
{
    static 
num[6];
    
strbreak(datanumsizeof(num) - 1datasizeof(data) - 1);
    
    
gXP[id] = str_to_num(num);
    
    for( new 
iItem 0iItem gItemsiItem++ )
    {
        
strbreak(datanumsizeof(num) - 1datasizeof(data) - 1);
        
gLevel[id][iItem] = clamp(str_to_num(num), 0gItemsLevels[iItem]);
    }
}

SortTopPlayers( &Array:aNames, &Array:aSteamIDs, &Array:aXPs )
{
    
aNames ArrayCreate32 );
    
aSteamIDs ArrayCreate35 );
    
aXPs ArrayCreate);
    
    new 
hVault nvault_util_open"HNSYenModTop" );
    new 
iCount nvault_util_counthVault );
    new 
iPos;
    new 
szSteamID35 ], szXP11 ], iTimeStampszName32 ];
    
    for( new 
0iCounti++ )
    {
        
iPos nvault_util_readhVaultiPosszSteamIDcharsmaxszSteamID ), szXPcharsmaxszXP ), iTimeStamp );
        
        
nvault_getgNameVaultszSteamIDszNamecharsmaxszName ) );
        
        
ArrayPushStringaNamesszName );
        
ArrayPushStringaSteamIDsszSteamID );
        
ArrayPushCellaXPsstr_to_numszXP ) );
    }
    
    
nvault_util_closehVault );
    
    new 
iXP;
    for( new 
0j< ( iCount ); i++ )
    {
        
iXP ArrayGetCellaXPs);
        
        for( 
1iCountj++ )
        {
            if( 
iXP ArrayGetCellaXPs) )
            {
                
ArraySwapaNamesi);
                
ArraySwapaSteamIDsi);
                
ArraySwapaXPsi);
                
                
i--;
                
                break;
            }
        }
    }
    
    return 
iCount;
}

bool:IsPlayer(id)
{
    if( 
<= id <= g_players )
    {
        return 
true;
    }

    return 
false;
}
    
bool:XPReady(victimkiller)
{
    if( 
IsPlayer(killer)
    && 
is_user_alive(killer)
    && 
is_user_connected(killer
    && 
victim != killer 
    
&& cs_get_user_team(killer) != cs_get_user_team(victim) )
    {
        return 
true;
    }

    return 
false;
}

stock Print(id, const sMsg[], any:...)
{
    static 
iid id get_Player();
    if( !
) return;
    
    new 
sMessage[256];
    new 
len formatex(sMessagesizeof(sMessage) - 1"^x04[%s]^x03 "PLUGIN_PREFIX);
    
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]);
}

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

stock 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();


Code:

Welcome to the AMX Mod X 1.8.1-300 Compiler.
Copyright (c) 1997-2006 ITB CompuPhase, AMX Mod X Team

Error: Expected token: ";", but found "[" on line 384
Error: Invalid expression, assumed zero on line 384
Warning: Expression has no effect on line 384
Error: Expected token: ";", but found "]" on line 384
Error: Too many error messages on one line on line 384

Compilation aborted.
4 Errors.
Could not locate output file C:\HLServer\cstrike\addons\amxmodx\scripting\YenMod.amx (compile failed).


Leon_12 01-03-2011 10:46

Re: Respawn chance help
 
give hnsxp.inc

mammapappa 01-03-2011 10:56

Re: Respawn chance help
 
1 Attachment(s)
Here it is

Exolent[jNr] 01-03-2011 23:06

Re: Respawn chance help
 
Don't bump until 2 weeks have passed since last post.


All times are GMT -4. The time now is 02:07.

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