AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   [Help]Level Plugins (https://forums.alliedmods.net/showthread.php?t=152852)

Joker. 03-15-2011 06:54

[Help]Level Plugins
 
I made a Level Plugins but it is not work. I want the Level start from 1.But it started from Max_level (I set the max level is 40)
PHP Code:

#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <nvault>
#include <fakemeta>
#include <fakemeta_util>
#include <hamsandwich>
#include <fun>
#include <zombieplague>
#include <levelsystem>
#define TASK_EXPERIENCE 3333
#define TASK_USERINFO 4444
#define EXP_TASK2        75646478
#define Attack_PerLevel 1
#define Killed_Exp      1
#define Health_PerLevel 2
new PlayerLevel[33]
new 
PlayerXp[33]
new 
g_kill[33]
new 
g_damage[33]
new 
g_msgSync
new g_maxplayers
new g_msgSayText
new vault
new bool:g_bConnected[33];
#define Max_Level  40
new LEVELS[Max_Level+1] =

        
10//1
        
20//2
        
30//3
        
40//4
        
50//5
        
60//6
        
70//7
        
80//8
        
90//9
        
100//10
        
110//11
        
120//12
        
130//13
        
140//14
        
150//15
        
160//16
        
170//17
        
180//18
        
190//19
        
200//20
        
400//21
        
600//22
        
800//23
        
900//24
        
1000//25
        
1100//26
        
1200//27
        
1300//28
        
1400//29
        
1500//30
        
2000//31
        
2200//32
        
2300//33
        
2400//34
        
2500//35
        
2600//36
        
2700//37
        
2800//38
        
2900//39
        
3000//40
}

public 
plugin_init()
{
          
register_plugin("蝑?蝟餌絞""1.1""Fung")
          
register_clcmd("zp_addxp""Cmd_AddXP"ADMIN_RCON"<@all/t/ct>/<name><xp> - give users xp")
   
register_clcmd("zp_setlevel""Cmd_SetLevel"ADMIN_RCON"<name><level> - give users level")
   
RegisterHam(Ham_TakeDamage"player""fw_TakeDamage")
   
RegisterHam(Ham_Killed"player""fw_PlayerKilled")
   
RegisterHam(Ham_Spawn"player""fw_PlayerSpawn_Post"1)
          
register_event("ResetHUD""Event_ResetHUD""be")
          
vault nvault_open("LevelSystem")
          
g_msgSync CreateHudSyncObj()
          
g_maxplayers get_maxplayers()
          
g_msgSayText get_user_msgid("SayText")
}
public 
plugin_natives()
{
 
register_native("get_user_level""native_get_user_level"1)
 
register_native("set_user_level""native_set_user_level"1)
        
register_native("get_user_xp""native_get_user_xp"1)
        
register_native("get_user_levels""native_get_user_levels"1)
}
public 
native_get_user_level(id)
{
 return 
PlayerLevel[id]
}
public 
native_set_user_level(idamount)
{
 
PlayerLevel[id] = amount
}
public 
native_get_user_xp(id)
{
 return 
PlayerXp[id]
}
public 
native_get_user_levels(id)
{
 return 
LEVELS[id]
}
public 
fw_PlayerKilled(victimattackershouldgib)
{
 
 if (!
is_user_connected(victim))
  return 
HAM_IGNORED
 
if ((attacker == victim) || !is_user_connected(attacker))
          return 
HAM_IGNORED
                
 
new get_exp
 
new bool:already_set false
 
new name[18]
 
g_kill[attacker] += 1
 get_user_name
(attackername17)
 if (!
already_set)
 {
   if (
is_user_alive(attacker))
   {
    if (!
is_user_alive(victim))
    {
     
get_exp = (Killed_Exp PlayerLevel[victim])
     
already_set true
    
}
   }
  }
 
 if (!
already_set)
  return 
HAM_IGNORED
 
 add_experience
(attackerget_exp)
 
client_print(attackerprint_center"+ %d EXP"get_exp)
 
client_print(attackerprint_console"+ %d EXP"get_exp)
 
        if(
cs_get_user_team(attacker) == CS_TEAM_CT)
 {
                if (
g_kill[attacker] == 2)
 {
                
zp_set_user_ammo_packs(attackerzp_get_user_ammo_packs(attacker)  + 2)
  
PlayerXp[attacker] += 1
                colored_print
(0"^x03[Combo] %s 已殺死 2 隻喪屍!!!! 獲2生存點和1EXP獎勵"name)
                
set_hudmessage(255,0,0,-1.00.1713.03.01.00.203)
                
show_hudmessage(attacker,"YOU COMBO KILLED 2 PEOPLE!!!!")
        }
                else if (
g_kill[attacker] == 4)
 {
                
zp_set_user_ammo_packs(attackerzp_get_user_ammo_packs(attacker)  + 3)
  
PlayerXp[attacker] += 2             
                colored_print
(0"^x03[Combo] %s 已殺死 4 隻喪屍!!!! 獲3生存點和2EXP獎勵"name)
                
set_hudmessage(255,0,0,-1.00.1713.03.01.00.203)
                
show_hudmessage(attacker,"YOU COMBO KILLED 4 PEOPLE!!!!")
 }
  else if (
g_kill[attacker] == 6)
 {
                
zp_set_user_ammo_packs(attackerzp_get_user_ammo_packs(attacker)  + 4)
  
PlayerXp[attacker] += 3
                colored_print
(0"^x03[Combo] %s 已殺死 6 隻喪屍!!!! 獲4生存點和3EXP獎勵"name)
                
set_hudmessage(255,0,0,-1.00.1713.03.01.00.203)
                
show_hudmessage(attacker,"YOU COMBO KILLED 6 PEOPLE!!!!")
 }
  else if (
g_kill[attacker] == 8)
 {
                
zp_set_user_ammo_packs(attackerzp_get_user_ammo_packs(attacker)  + 5)
  
PlayerXp[attacker] += 4
                colored_print
(0"^x03[Combo] %s 已殺死 8 隻喪屍!!!! 獲5生存點和4EXP獎勵"name)
                
set_hudmessage(255,0,0,-1.00.1713.03.01.00.203)
                
show_hudmessage(attacker,"YOU COMBO KILLED 8 PEOPLE!!!!")
 }
  else if (
g_kill[attacker] == 10)
 {
                
zp_set_user_ammo_packs(attackerzp_get_user_ammo_packs(attacker)  + 6)
  
PlayerXp[attacker] += 5
                colored_print
(0"^x03[Combo] %s 已殺死 10 隻喪屍!!!! 獲6生存點和5EXP獎勵"name)
                
set_hudmessage(255,0,0,-1.00.1713.03.01.00.203)
                
show_hudmessage(attacker,"YOU COMBO KILLED 10 PEOPLE!!!!")
 }
  else if (
g_kill[attacker] == 12)
 {
                
zp_set_user_ammo_packs(attackerzp_get_user_ammo_packs(attacker)  + 7)
  
PlayerXp[attacker] += 6
                colored_print
(0"^x03[Combo] %s 已殺死 12 隻喪屍!!!! 獲7生存點和6EXP獎勵"name)
                
set_hudmessage(255,0,0,-1.00.1713.03.01.00.203)
                
show_hudmessage(attacker,"YOU COMBO KILLED 12 PEOPLE!!!!")
 }
  else if (
g_kill[attacker] == 14)
 {
                
zp_set_user_ammo_packs(attackerzp_get_user_ammo_packs(attacker)  + 8)
  
PlayerXp[attacker] += 7
                colored_print
(0"^x03[Combo] %s 已殺死 14 隻喪屍!!!! 獲8生存點和7EXP獎勵"name)
                
set_hudmessage(255,0,0,-1.00.1713.03.01.00.203)
                
show_hudmessage(attacker,"YOU COMBO KILLED 14 PEOPLE!!!!")
 }
         }
 return 
PLUGIN_HANDLED;
}
public 
fw_TakeDamage(victiminflictorattackerFloat:damagedamage_type)  
{
 if (!(
<= attacker <= g_maxplayers) || victim == attacker || !is_user_connected(attacker))
  return 
HAM_IGNORED;
   
 if (!(
damage_type DMG_BULLET))
  return 
HAM_IGNORED;
 
 if (
PlayerLevel[attacker] > 0)
 {
  static 
Float:damage_multi
  
  
if (cs_get_user_team(attacker) == CS_TEAM_CT)
   
damage_multi 1.0 float(PlayerLevel[attacker] * Attack_PerLevel 100)
  
                
damage *= damage_multi
  SetHamParamFloat
(4damage)
 }
            
         if (!
attacker || attacker==victim || get_user_team(attacker)==get_user_team(victim) )
 {
  return 
PLUGIN_CONTINUE
 
}
 
 
g_damage[attacker] += 50
            
            
if (g_damage[attacker] >= 1500)
            {
                    
g_damage[attacker] -= 1500
      PlayerXp
[attacker] += 1                   
             client_print
(attackerprint_center"+1EXP")
 }
 
  return 
HAM_IGNORED;
}
public 
Cmd_AddXP(idlevelcid
{
 if (!
cmd_access(idlevelcid3))
 {
  return 
PLUGIN_HANDLED;
 }
 
 new 
Arg1[64], Target
 read_argv
(1Arg163)
 
 new 
iAddExp[32], Value
 read_argv
(2iAddExp31)
 if (
iAddExp[0] == '-')
 {
  
console_print(id"You cant have a - in the value")
  return 
PLUGIN_HANDLED;
 }
 
 
Value str_to_num(iAddExp)
 
 new 
AdminName[32]
 
get_user_name(idAdminName31)
 
 new 
TargetTeam
 
new Players[32], iNum
 
if (Arg1[0] == '@')
 {
  if (
equali(Arg1[1], "all"))
  {
   
TargetTeam 0
   get_players
(PlayersiNum)
  }
  else if (
equali(Arg1[1], "t"))
  {
   
TargetTeam 1
   get_players
(PlayersiNum"e" "terrorist")
  } 
  else if (
equali(Arg1[1], "ct"))
  {
   
TargetTeam 2
   get_players
(PlayersiNum"e" "ct")
  }
  
  for (new 
0iNum; ++i)
  {
   
Target Players[i]
   
add_experience(TargetValue)
  }
  
  switch (
TargetTeam)
  {
   case 
0:
   {
    
console_print(id"You have given %d xp to all"Value)
    
colored_print(0"^x04[等級系統]^x03 管理員: %s 已給予 %d 經驗於全體"AdminNameValue)
   }
   case 
1:
   {
    
console_print(id"You have given %d xp to the T team"Value)
    
colored_print(0"^x04[等級系統]^x03 管理員: %s 已給予 %d 經驗於 TS 隊伍"AdminNameValue)
   }
   case 
2:
   {
    
console_print(id"You have given %d xp to the CT team"Value)
    
colored_print(0"^x04[等級系統]^x03 管理員: %s 己給予 %d 經驗於 CT 隊伍"AdminNameValue)
   }
  }
 }
 else
 {
  
Target cmd_target(idArg10)
  
  if (!
is_user_connected(Target))
   return 
PLUGIN_HANDLED;
  
  new 
TargetName[32]
  
get_user_name(TargetTargetName31)
  
  
add_experience(TargetValue)
  
  
console_print(id"You have given %d xp to %s"ValueTargetName)
  
colored_print(Target"^x04[等級系統]^x03 管理員: %s 已給予你 %d 經驗"AdminNameValue)
 }
 
 return 
PLUGIN_HANDLED;
}
public 
Cmd_SetLevel(idlevelcid)
{
 if (!
cmd_access(idlevelcid3))
  return 
PLUGIN_HANDLED;
 
 new 
Arg1[64], Target
 read_argv
(1Arg163)
 
Target cmd_target(idArg10)
 
 new 
iLevel[32], Value
 read_argv
(2iLevel31)
 
Value str_to_num(iLevel)
 
 if (!
is_user_connected(Target))
  return 
PLUGIN_HANDLED;
 
 if (
Value Max_Level)
 {
  
console_print(id"You cant have a more than %d"Max_Level)
  return 
PLUGIN_HANDLED;
 }
 
 new 
AdminName[32]
 
get_user_name(idAdminName31)
 
 new 
TargetName[32]
 
get_user_name(TargetTargetName31)
 
 
PlayerLevel[Target] = Value
 PlayerXp
[Target] = LEVELS[PlayerLevel[Target]]
  
 
console_print(id"You have set %s level to %d"TargetNameValue)
 
colored_print(Target"^x04[等級系統]^x03 管理員: %s 己設定你的等級為 %d"AdminNameValue)
 
 return 
PLUGIN_HANDLED;
}
public 
add_experience(idvalue)
{
 
PlayerXp[id] += value
}
public 
show_user_info(taskid)
{
        new 
id taskid-TASK_USERINFO
 
if (is_user_alive(id))
 {
  new 
InfoMsg[128]
   
                
format(InfoMsgcharsmax(InfoMsg), "等級: %d-經驗值: %d/%d|攻擊力加成: +%d | COMBO: %d^n"PlayerLevel[id], PlayerXp[id], LEVELS[min(PlayerLevel[id]+1Max_Level)],PlayerLevel[id]*Attack_PerLevelg_kill[id])
    
  
set_hudmessage(025500.730.8106.00.60.00.0, -1)
  
ShowSyncHudMsg(idg_msgSyncInfoMsg)
 }
 else
 {
  
// Get spectating target
  
new target pev(idpev_iuser2)
  
  
// If target is alive show infomation
  
if (is_user_alive(target))
  {
   new 
sName[32], szMenuBody[128]
   
get_user_name(targetsName31)
   
format(szMenuBodycharsmax(szMenuBody), "等級: %d^n經驗值: %d/%d"PlayerLevel[target], PlayerXp[target], LEVELS[min(PlayerLevel[target]+1Max_Level)])
   
set_hudmessage(025500.010.8506.00.60.00.0, -1)
   
ShowSyncHudMsg(idg_msgSyncszMenuBody)
  }
 }
}
 
public 
process_experience(taskid)
{
 new 
id taskid-TASK_EXPERIENCE
        
new name[32]
        
get_user_name(id,name,31)
 
 if (
PlayerXp[id] >= LEVELS[Max_Level] || PlayerLevel[id] >= (Max_Level))
 {
  
PlayerLevel[id] = Max_Level
  PlayerXp
[id] = min(PlayerXp[id], LEVELS[Max_Level])
  return;
 }
 
 if (
PlayerLevel[id] <= && PlayerXp[id] >= LEVELS[PlayerLevel[id]+1])
 {
  
PlayerLevel[id] += 1
                set_hudmessage
(20000, -1.00.1713.03.01.00.203)
                
show_hudmessage(id,"Level up!!!!^n你已達到 %d 等級" PlayerLevel[id])
                
PlayerXp[id] = 0
 
}
        else if (
PlayerXp[id] >= LEVELS[PlayerLevel[id]+1])     
        {
                
PlayerLevel[id] += 1
                set_hudmessage
(20000, -1.00.1713.03.01.00.203)
                
show_hudmessage(id,"Level up!!!!^n你已達到 %d 等級" PlayerLevel[id])
                
colored_print(0"^x04[等級] %s 達到 ^x03%d ^x04等級!!!!"namePlayerLevel[id])
                
PlayerXp[id] = 0
 
}
}
public 
client_putinserver(id)
{
  
PlayerXp[id] = 
  PlayerLevel
[id] = 0
  set_task
(0.1"process_experience"id+TASK_EXPERIENCE__"b")
         
set_task(0.5"show_user_info"id+TASK_USERINFO__"b")
         
LoadData(id)     
}
public 
client_disconnect(id)
{
  
remove_task(id+TASK_EXPERIENCE)
         
remove_task(id+TASK_USERINFO)
  
g_bConnected[id] = false;
  
SaveData(id)    
}
public 
SaveData(id)
{
         new 
name[35], vaultkey[64], vaultdata[256]
  
         
get_user_name(idname34)
         
format(vaultkey63"%s-LevelInfo"name)
         
format(vaultdata255"%i#%i#%i#"PlayerLevel[id], PlayerXp[id])
         
nvault_set(vaultvaultkeyvaultdata)
         return 
PLUGIN_CONTINUE
}
public 
LoadData(id)
{
          new 
name[35], vaultkey[64], vaultdata[256]
   
          
get_user_name(id,name,34)
          
format(vaultkey63"%s-LevelInfo"name)
          
          
format(vaultdata255"%i#%i#%i#"PlayerLevel[id], PlayerXp[id])
          
nvault_get(vaultvaultkeyvaultdata255)
          
replace_all(vaultdata255"#"" ")
          new 
playerlevel[32], playerxp[32]
          
          
parse(vaultdataplayerlevel31playerxp31)
          
PlayerLevel[id] = str_to_num(playerlevel)
          
PlayerXp[id] = str_to_num(playerxp)
          return 
PLUGIN_CONTINUE
}
public 
colored_print(target, const message[], any:...)
{
 static 
buffer[512]
 
 if (!
target)
 {
  static 
playerg_maxplayers
  g_maxplayers 
get_maxplayers()
  
  for (
player 1player <= g_maxplayersplayer++)
  {
   if (!
is_user_connected(player))
    return 
PLUGIN_CONTINUE;
   
   
vformat(buffersizeof buffer 1message3)
   
   
// Send it
   
message_begin(MSG_ONEg_msgSayText_player)
   
write_byte(player)
   
write_string(buffer)
   
message_end()
  }
 }
 
 else
 {
  
vformat(buffersizeof buffer 1message3)
  
  
message_begin(MSG_ONEg_msgSayText_target)
  
write_byte(target)
  
write_string(buffer)
  
message_end()
 }
         
 return 
PLUGIN_HANDLED;
}
 
public 
Event_ResetHUD(id)
{
 if (!
is_user_alive(id))
  return 
PLUGIN_CONTINUE;
 
 
set_task(0.5"set_health"id)
 
 
SaveData(id)
 
 return 
PLUGIN_CONTINUE;
}
    
public 
set_health(id)
{
 if (
is_user_alive(id) && PlayerLevel[id] > 0)
 {
  new 
health
  health 
get_user_health(id) + (PlayerLevel[id] * Health_PerLevel)
  
fm_set_user_health(idhealth)
 }
}

public 
fw_PlayerSpawn_Post(id)
{
        
g_kill[id] -= g_kill[id]
}
stock get_in_game_players()
{
 new 
g_maxplayers get_g_maxplayers()
 new 
players 0
 
new team
 
for (new 1<= g_maxplayersi++)
 {
  if (!
is_user_connected(i))
   continue;
  
  
team get_user_team(i)
  if (
team == || team == 2)
   
players++
 }
 
 return 
players;
}
stock fm_set_user_health(indexhealth)
{
 
health set_pev(indexpev_healthfloat(health)) : dllfunc(DLLFunc_ClientKillindex);
 
 return 
1;
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ ansicpg950\\ deff0{\\ fonttbl{\\ f0\\ fnil\\ fcharset136 Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang3076\\ f0\\ fs16 \n\\ par }
*/ 


Bugsy 03-15-2011 08:55

Re: [Help]Level Plugins
 
Array indexes begin at 0 so your level 1 is actually 0 and 40 is 39. Add a 0 to the beginning of your array and it should be aligned properly. Also remove the comma after the last item. I didn't look at any other part of your code.

PHP Code:

new LEVELS[Max_Level+1] =

        
0,  //0 
        
10//1
        
20//2
        //...
        
40  //40



Joker. 03-15-2011 09:32

Re: [Help]Level Plugins
 
Quote:

Originally Posted by Bugsy (Post 1433589)
Array indexes begin at 0 so your level 1 is actually 0 and 40 is 39. Add a 0 to the beginning of your array and it should be aligned properly. Also remove the comma after the last item. I didn't look at any other part of your code.

PHP Code:

new LEVELS[Max_Level+1] =

        
0,  //0 
        
10//1
        
20//2
        //...
        
40  //40



I changed it. But there are 4 errors:
LevelSysteam.sma<236> : warning 217: loose indentation
LevelSysteam.sma<241> : warning 217: loose indentation
LevelSysteam.sma<243> : warning 217: loose indentation
LevelSysteam.sma<250> : warning 217: loose indentation
LevelSysteam.sma<584> : error 021: symbol already defined: "fm_set_user_health"
I don't know how to correct it. Anyone can help me??

fysiks 03-15-2011 18:21

Re: [Help]Level Plugins
 
Quote:

Originally Posted by Joker. (Post 1433614)
I changed it. But there are 4 errors:
LevelSysteam.sma<236> : warning 217: loose indentation
LevelSysteam.sma<241> : warning 217: loose indentation
LevelSysteam.sma<243> : warning 217: loose indentation
LevelSysteam.sma<250> : warning 217: loose indentation
LevelSysteam.sma<584> : error 021: symbol already defined: "fm_set_user_health"
I don't know how to correct it. Anyone can help me??

1. There is only 1 error there.
2. The error is probably because you missed a closing parenthesis, brace, or bracket.

Joker. 03-16-2011 05:48

Re: [Help]Level Plugins
 
Quote:

Originally Posted by fysiks (Post 1433865)
1. There is only 1 error there.
2. The error is probably because you missed a closing parenthesis, brace, or bracket.

I fixed it and changed it. It can compile to amxx. But it's still not work. It also start from Max levels.


All times are GMT -4. The time now is 14:33.

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