Raised This Month: $ Target: $400
 0% 

Respawn chance help


  
 
 
Thread Tools Display Modes
Prev Previous Post   Next Post Next
Author Message
mammapappa
Member
Join Date: Nov 2008
Old 12-28-2010 , 16:31   Respawn chance help
Reply With Quote #1

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).

Last edited by mammapappa; 12-28-2010 at 17:35.
mammapappa is offline
 


Thread Tools
Display Modes

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 02:07.


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