Нуждая се отново от вашата помощ за следното нещо, когато някой даде на някой играч аммо желая да излиза това съобщение в чата за всички CC_SendMessage(0, "&x04<Server> &x01Player &x04%s &x01gave &x04%s ^x01AP to &x04%s&x01.",name,arg_ap,target_name), направих го по този начин но за съжаление няма резултат, и излиза следната грешка в конзолата на сървъра при опит за даване на аммо пакс, в смисъл то си го дава аммото на играча ама не показва това съобщение което искам.
Това е грешката:
L 08/29/2021 - 00:11:47: [AMXX] Displaying debug trace (plugin "zp_ua_uaio_veco.amxx", version "2.7")
L 08/29/2021 - 00:11:47: [AMXX] Run time error 10: native error (native "zp_set_user_zombie_class")
L 08/29/2021 - 00:11:47: [AMXX] [0] zp_ua_uaio_veco.sma::load_user_data (line 405)
L 08/29/2021 - 00:16:02: [ZP] Invalid Player (0)
L 08/29/2021 - 00:16:02: [AMXX] Displaying debug trace (plugin "zp_ua_uaio_veco.amxx", version "2.7")
L 08/29/2021 - 00:16:02: [AMXX] Run time error 10: native error (native "zp_get_user_zombie_class")
L 08/29/2021 - 00:16:02: [AMXX] [0] zp_ua_uaio_veco.sma::save_user_data (line 435)
L 08/29/2021 - 00:16:02: [AMXX] [1] zp_ua_uaio_veco.sma::event_hltv (line 356)
Кода на плъгина:
Код за потвърждение: Избери целия код
/*
---------------------------------------------------------
---------------------------------------------------------
Don't forget to visit http://www.amxmodxbg.org :)
---------------------------------------------------------
*/
#include <amxmodx>
#include <amxmisc>
#include <cromchat>
#include <nvault>
#include <zombieplague>
#define ADMIN_GIVE_AMMO ADMIN_IMMUNITY // access level for zp_donate command
#define LOGFILE "addons/amxmodx/logs/zp_ua_uaio_veco.log"
/*START - From colorchat.inc by Numb */
enum Color {
NORMAL = 1,
GREEN,
TEAM_COLOR,
GREY,
RED,
BLUE,
}
new TeamName[][] = {
"",
"TERRORIST",
"CT",
"SPECTATOR"
}
/*END - From colorchat.inc by Numb */
new must_save[33],data_vault, pointer_activity, maxplayers,
cvar_data_save_type, cvar_cmd_give,cvar_cmd_ap,cvar_cmd_ammo, cvar_show_hp, cvar_give_ammo_public, cvar_ammo_limit
public plugin_init() {
register_plugin("[ZP] Ultimate Addon UAIO by <VeCo>", "2.7", "<VeCo>")
register_cvar("zp_ua_uaio_veco_version","2.7",FCVAR_SERVER | FCVAR_SPONLY)
pointer_activity = get_cvar_pointer("amx_show_activity")
register_concmd("zp_donate","admin_ammo_give",ADMIN_GIVE_AMMO,"<name / #userid / @H / @Z / @ALL> <ammo packs>")
register_clcmd("say","hook_say")
register_clcmd("say_team","hook_say")
register_event("Damage","event_damage","b","2!0","3=0","4!0")
register_event("HLTV","event_hltv","a","1=0","2=0")
cvar_data_save_type = register_cvar("zp_ua_data_save_type","0")
cvar_cmd_give = register_cvar("zp_ua_give_command","1")
cvar_cmd_ap = register_cvar("zp_ua_ap_command","1")
cvar_cmd_ammo = register_cvar("zp_ua_ammo_command","1")
cvar_show_hp = register_cvar("zp_ua_show_hp","0")
cvar_give_ammo_public = register_cvar("zp_ua_give_ammo_public","0")
cvar_ammo_limit = register_cvar("zp_ua_ammo_limit","100000")
maxplayers = get_maxplayers()
data_vault = nvault_open("zp_ua_uaio_veco")
}
public admin_ammo_give(id,level,cid)
{
if(!cmd_access(id,level,cid,1)) return PLUGIN_HANDLED
new arg_name[32],arg_ap[10]
read_argv(1,arg_name,31)
read_argv(2,arg_ap,9)
new name[32],target_name[32], ip[16],target_ip[16], steamid[32],target_steamid[32],
target,type, num_ap = str_to_num(arg_ap)
if(!equali(arg_name,"@H") && !equali(arg_name,"@Z") && !equali(arg_name,"@ALL")) target = cmd_target(id,arg_name,0)
get_user_name(id,name,31)
get_user_ip(id,ip,15,1)
get_user_authid(id,steamid,31)
get_user_name(target,target_name,31)
get_user_ip(target,target_ip,15,1)
get_user_authid(target,target_steamid,31)
if(num_ap <= 0)
{
console_print(id,"[ZP]^x01 You can give only positive ammo packs.")
return PLUGIN_HANDLED
}
type = 0
if(equali(arg_name,"@H"))
{
type = 1
for(new i=1;i<33;i++) if(is_user_connected(i) && !zp_get_user_zombie(i)) zp_set_user_ammo_packs(i, zp_get_user_ammo_packs(i) + num_ap)
} else if(equali(arg_name,"@Z"))
{
type = 2
for(new i=1;i<33;i++) if(is_user_connected(i) && zp_get_user_zombie(i)) zp_set_user_ammo_packs(i, zp_get_user_ammo_packs(i) + num_ap)
} else if(equali(arg_name,"@ALL"))
{
type = 3
for(new i=1;i<33;i++) if(is_user_connected(i)) zp_set_user_ammo_packs(i, zp_get_user_ammo_packs(i) + num_ap)
} else {
zp_set_user_ammo_packs(target, zp_get_user_ammo_packs(target) + num_ap)
}
if(get_pcvar_num(cvar_give_ammo_public))
{
switch(get_pcvar_num(pointer_activity))
{
case 1:
{
switch(type)
{
case 1: ColorChat(0,GREEN,"[ZP]^x01 ADMIN gave ^x04%s^x01 ammo packs to all humans.",arg_ap)
case 2: ColorChat(0,GREEN,"[ZP]^x01 ADMIN gave ^x04%s^x01 ammo packs to all zombies.",arg_ap)
case 3: ColorChat(0,GREEN,"[ZP]^x01 ADMIN gave ^x04%s^x01 ammo packs to all players.",arg_ap)
default: ColorChat(0,GREEN,"[ZP]^x01 ADMIN gave ^x04%s^x01 ammo packs to ^x04%s^x01.",arg_ap,target_name)
}
}
case 2:
{
switch(type)
{
case 1: ColorChat(0,GREEN,"[ZP]^x01 ADMIN ^x04%s^x01 gave ^x04%s^x01 ammo packs to all humans.",name,arg_ap)
case 2: ColorChat(0,GREEN,"[ZP]^x01 ADMIN ^x04%s^x01 gave ^x04%s^x01 ammo packs to all zombies.",name,arg_ap)
case 3: ColorChat(0,GREEN,"[ZP]^x01 ADMIN ^x04%s^x01 gave ^x04%s^x01 ammo packs to all players.",name,arg_ap)
default: ColorChat(0,GREEN,"[ZP]^x01 ADMIN ^x04%s^x01 gave ^x04%s^x01 ammo packs to ^x04%s^x01.",name,arg_ap,target_name)
}
}
}
}
switch(type)
{
case 1: log_to_file(LOGFILE,"ADMIN %s [IP: %s][STEAMID: %s] gave [%i] ammo packs to all humans.",name,ip,steamid,num_ap)
case 2: log_to_file(LOGFILE,"ADMIN %s [IP: %s][STEAMID: %s] gave [%i] ammo packs to all zombies.",name,ip,steamid,num_ap)
case 3: log_to_file(LOGFILE,"ADMIN %s [IP: %s][STEAMID: %s] gave [%i] ammo packs to all players.",name,ip,steamid,num_ap)
default: log_to_file(LOGFILE,"ADMIN %s [IP: %s][STEAMID: %s] gave [%i] ammo packs to %s [IP: %s][STEAMID: %s]",name,ip,steamid, num_ap, target_name,target_ip,target_steamid)
}
return PLUGIN_HANDLED
}
public admin_ammo_take(id,level,cid)
{
if(!cmd_access(id,level,cid,1)) return PLUGIN_HANDLED
new arg_name[32],arg_ap[10]
read_argv(1,arg_name,31)
read_argv(2,arg_ap,9)
new name[32],target_name[32], ip[16],target_ip[16], steamid[32],target_steamid[32],
target,type, num_ap = str_to_num(arg_ap)
if(!equali(arg_name,"@H") && !equali(arg_name,"@Z") && !equali(arg_name,"@ALL")) target = cmd_target(id,arg_name,0)
get_user_name(id,name,31)
get_user_ip(id,ip,15,1)
get_user_authid(id,steamid,31)
get_user_name(target,target_name,31)
get_user_ip(target,target_ip,15,1)
get_user_authid(target,target_steamid,31)
if(num_ap <= 0)
{
console_print(id,"[ZP]^x01 You can take only positive ammo packs.")
return PLUGIN_HANDLED
}
type = 0
if(equali(arg_name,"@H"))
{
type = 1
for(new i=1;i<33;i++) if(is_user_connected(i) && !zp_get_user_zombie(i)) zp_set_user_ammo_packs(i, zp_get_user_ammo_packs(i) - num_ap)
} else if(equali(arg_name,"@Z"))
{
type = 2
for(new i=1;i<33;i++) if(is_user_connected(i) && zp_get_user_zombie(i)) zp_set_user_ammo_packs(i, zp_get_user_ammo_packs(i) - num_ap)
} else if(equali(arg_name,"@ALL"))
{
type = 3
for(new i=1;i<33;i++) if(is_user_connected(i)) zp_set_user_ammo_packs(i, zp_get_user_ammo_packs(i) - num_ap)
} else {
zp_set_user_ammo_packs(target, zp_get_user_ammo_packs(target) - num_ap)
}
if(zp_get_user_ammo_packs(target) < 0) zp_set_user_ammo_packs(target,0)
if(get_pcvar_num(cvar_give_ammo_public))
{
switch(get_pcvar_num(pointer_activity))
{
case 1:
{
switch(type)
{
case 1: ColorChat(0,GREEN,"[ZP]^x01 ADMIN took ^x04%s^x01 ammo packs from all humans.",arg_ap)
case 2: ColorChat(0,GREEN,"[ZP]^x01 ADMIN took ^x04%s^x01 ammo packs from all zombies.",arg_ap)
case 3: ColorChat(0,GREEN,"[ZP]^x01 ADMIN took ^x04%s^x01 ammo packs from all players.",arg_ap)
default: ColorChat(0,GREEN,"[ZP]^x01 ADMIN took ^x04%s^x01 ammo packs from ^x04%s^x01.",arg_ap,target_name)
}
}
case 2:
{
switch(type)
{
case 1: ColorChat(0,GREEN,"[ZP]^x01 ADMIN ^x04%s^x01 took ^x04%s^x01 ammo packs from all humans.",name,arg_ap)
case 2: ColorChat(0,GREEN,"[ZP]^x01 ADMIN ^x04%s^x01 took ^x04%s^x01 ammo packs from all zombies.",name,arg_ap)
case 3: ColorChat(0,GREEN,"[ZP]^x01 ADMIN ^x04%s^x01 took ^x04%s^x01 ammo packs from all players.",name,arg_ap)
default: ColorChat(0,GREEN,"[ZP]^x01 ADMIN ^x04%s^x01 took ^x04%s^x01 ammo packs from ^x04%s^x01.",name,arg_ap,target_name)
}
}
}
}
switch(type)
{
case 1: log_to_file(LOGFILE,"ADMIN %s [IP: %s][STEAMID: %s] took [%i] ammo packs from all humans.",name,ip,steamid,num_ap)
case 2: log_to_file(LOGFILE,"ADMIN %s [IP: %s][STEAMID: %s] took [%i] ammo packs from all zombies.",name,ip,steamid,num_ap)
case 3: log_to_file(LOGFILE,"ADMIN %s [IP: %s][STEAMID: %s] took [%i] ammo packs from all players.",name,ip,steamid,num_ap)
default: log_to_file(LOGFILE,"ADMIN %s [IP: %s][STEAMID: %s] took [%i] ammo packs from %s [IP: %s][STEAMID: %s]",name,ip,steamid, num_ap, target_name,target_ip,target_steamid)
}
return PLUGIN_HANDLED
}
public hook_say(id)
{
new args[129], arg_cmd[6],arg_name[32],arg_ap[10]
read_args(args,128)
remove_quotes(args)
parse(args, arg_cmd,5, arg_name,31, arg_ap,9)
if(get_pcvar_num(cvar_cmd_give) && equali(arg_cmd,"/give"))
{
new name[32],target_name[32], ip[16],target_ip[16], steamid[32],target_steamid[32],
target, num_ap = str_to_num(arg_ap)
get_user_name(id,name,31)
get_user_ip(id,ip,15,1)
get_user_authid(id,steamid,31)
target = cmd_target(id,arg_name,0)
get_user_name(target,target_name,31)
get_user_ip(target,target_ip,15,1)
get_user_authid(target,target_steamid,31)
if(equal(arg_name,""))
{
CC_SendMessage(id, "&x04<Server> &x01Example: &x04/give player 5&x01.")
return
}
if(!target)
{
CC_SendMessage(id, "^x04<Server> ^x01Invalid name.")
return
}
if(id == target)
{
CC_SendMessage(id, "^x04<Server> ^x01Unavailable command.")
return
}
if(zp_get_user_ammo_packs(id) < num_ap)
{
CC_SendMessage(id, "^x04<Server> ^x01Unavailable command.")
return
}
if(num_ap <= 0)
{
CC_SendMessage(id, "^x04<Server> ^x01Unavailable command.")
return
}
zp_set_user_ammo_packs(id, zp_get_user_ammo_packs(id) - num_ap)
zp_set_user_ammo_packs(target, zp_get_user_ammo_packs(target) + num_ap)
if(get_pcvar_num(cvar_give_ammo_public)) CC_SendMessage(0, "&x04<Server> &x01Player &x04%s &x01gave &x04%s ^x01AP to &x04%s&x01.",name,arg_ap,target_name)
log_to_file("addons/amxmodx/logs/zp_ua_uaio_veco.log","%s [IP: %s][STEAMID: %s] gave [%i] ammo packs to %s [IP: %s][STEAMID: %s]",name,ip,steamid, num_ap, target_name,target_ip,target_steamid)
}
if(get_pcvar_num(cvar_cmd_ap) && equali(arg_cmd,"/ap")) CC_SendMessage(id, "&x04<Server> &x01You have &x04%i &x01AP.",zp_get_user_ammo_packs(id))
if(get_pcvar_num(cvar_cmd_ammo) && equali(arg_cmd,"/ammo"))
{
new target_name[32],target
target = cmd_target(id,arg_name,0)
get_user_name(target,target_name,31)
if(equal(arg_name,""))
{
CC_SendMessage(id, "^x04<Server> ^x01You must enter a name.")
return
}
if(!target)
{
CC_SendMessage(id, "^x04<Server> ^x01Invalid name.")
return
}
if(id == target)
{
ColorChat(id,GREEN,"[ZP]^x01 Try the^x04 /ap^x01 command to see your ammo packs.")
return
}
CC_SendMessage(id, "&x04<Server> &x01Player &x04%s &x01has &x04%i &x01AP.", target_name, zp_get_user_ammo_packs(target))
}
}
public event_damage(id)
{
new killer,hp
killer = get_user_attacker(id)
hp = get_user_health(id)
if((1 <= id <= maxplayers) && is_user_connected(id) && is_user_connected(killer))
{
if(hp > 0)
{
switch(get_pcvar_num(cvar_show_hp))
{
case 1: if(zp_get_user_zombie(id)) client_print(killer,print_center,"HP: %i",hp)
case 2: if(zp_get_user_nemesis(id)) client_print(killer,print_center,"HP: %i",hp)
case 3: if(zp_get_user_zombie(id) || zp_get_user_nemesis(id)) client_print(killer,print_center,"HP: %i",hp)
}
} else {
switch(get_pcvar_num(cvar_show_hp))
{
case 1: if(zp_get_user_zombie(id)) client_print(killer,print_center,"KILLED!")
case 2: if(zp_get_user_nemesis(id)) client_print(killer,print_center,"KILLED!")
case 3: if(zp_get_user_zombie(id) || zp_get_user_nemesis(id)) client_print(killer,print_center,"KILLED!")
}
}
}
}
public event_hltv(id) if(get_pcvar_num(cvar_data_save_type) != -1) save_user_data(id)
public client_putinserver(id) if(get_pcvar_num(cvar_data_save_type) != -1) set_task(0.1,"load_user_data",id)
public client_disconnect(id)
{
if(get_pcvar_num(cvar_data_save_type) != -1 && must_save[id])
{
save_user_data(id)
must_save[id] = false
}
}
public load_user_data(id)
{
if(!is_user_connected(id)) return
new user_data[64], vaultkey[64],vaultdata[63], data_ammo_packs[32],data_zombie_class[32], vault_timestamp
switch(get_pcvar_num(cvar_data_save_type))
{
case 1:
{
get_user_ip(id,user_data,63,1)
format(vaultkey,63,"[ip]%s",user_data)
}
case 2:
{
get_user_authid(id,user_data,63)
format(vaultkey,63,"[aulthid]%s",user_data)
}
default:
{
get_user_name(id,user_data,63)
format(vaultkey,63,"[name]%s",user_data)
}
}
if(!nvault_lookup(data_vault,vaultkey,vaultdata,62,vault_timestamp))
{
must_save[id] = true
return
}
nvault_get(data_vault,vaultkey,vaultdata,62)
replace_all(vaultdata,62,"#"," ")
parse(vaultdata, data_ammo_packs,31, data_zombie_class,31)
zp_set_user_ammo_packs(id, str_to_num(data_ammo_packs))
zp_set_user_zombie_class(id, str_to_num(data_zombie_class))
must_save[id] = true
if(get_pcvar_num(cvar_ammo_limit) != 0 && zp_get_user_ammo_packs(id) > get_pcvar_num(cvar_ammo_limit)) zp_set_user_ammo_packs(id,get_pcvar_num(cvar_ammo_limit))
}
public save_user_data(id)
{
new user_data[64], vaultkey[64],vaultdata[63]
switch(get_pcvar_num(cvar_data_save_type))
{
case 1:
{
get_user_ip(id,user_data,63,1)
format(vaultkey,63,"[ip]%s",user_data)
}
case 2:
{
get_user_authid(id,user_data,63)
format(vaultkey,63,"[aulthid]%s",user_data)
}
default:
{
get_user_name(id,user_data,63)
format(vaultkey,63,"[name]%s",user_data)
}
}
format(vaultdata,62,"%i#%i#",zp_get_user_ammo_packs(id),zp_get_user_zombie_class(id))
nvault_set(data_vault,vaultkey,vaultdata)
}
FindPlayer() {
new i = -1
while(i <= get_maxplayers()) {
if(is_user_connected(++i))
return i
}
return -1
}
/*END - From colorchat.inc by Numb */