Raised This Month: $ Target: $400
 0% 

[Help]Level Plugins


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
Joker.
Member
Join Date: Mar 2011
Old 03-15-2011 , 06:54   [Help]Level Plugins
Reply With Quote #1

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 }
*/ 
Joker. is offline
Bugsy
AMX Mod X Moderator
Join Date: Feb 2005
Location: NJ, USA
Old 03-15-2011 , 08:55   Re: [Help]Level Plugins
Reply With Quote #2

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

__________________
Bugsy is offline
Joker.
Member
Join Date: Mar 2011
Old 03-15-2011 , 09:32   Re: [Help]Level Plugins
Reply With Quote #3

Quote:
Originally Posted by Bugsy View Post
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??
Joker. is offline
fysiks
Veteran Member
Join Date: Sep 2007
Location: Flatland, USA
Old 03-15-2011 , 18:21   Re: [Help]Level Plugins
Reply With Quote #4

Quote:
Originally Posted by Joker. View Post
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.
__________________
fysiks is offline
Old 03-16-2011, 05:24
Joker.
This message has been deleted by Joker.. Reason: I sent a work message
Joker.
Member
Join Date: Mar 2011
Old 03-16-2011 , 05:48   Re: [Help]Level Plugins
Reply With Quote #5

Quote:
Originally Posted by fysiks View Post
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.
Joker. is offline
Old 03-17-2011, 04:16
Joker.
This message has been deleted by Exolent[jNr]. Reason: Don't bump until 2 weeks have passed since last post.
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 14:33.


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