Код:
/*
При установке плагина, надо создать папку money_team в папке addons\amxmodx\configs\
в папку money_team, сохраняются файлы с ником игрока:
Его баланс на момент выхода из сервера;
< --- v0.1 --->
На данный момент работает:
выдача кредита 1 раз за карту;
сохранение баланса при выходе с сервера,или смене карты.
Восстановление баланса при входе игрока на сервер.
Выдача кредитов,привязана к квару mp_startmoney в server.cfg,
И работает если наличность на руках меньше заданного в mp_startmoney
*/
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <hamsandwich>
#define PLUGIN "money_team"
#define VERSION "0.1"
#define AUTHOR "MiXa"
new name[32]
new q_money[512]
new MyInteger
new g_credit[33] = 0
new configsDir[64]
public plugin_init(){
register_plugin(PLUGIN, VERSION, AUTHOR)
register_cvar("money_credit_max", "4000") // максимальная сумма кредита
register_cvar("money_credit_min", "1000") // минимальная сумма кредита
RegisterHam(Ham_Spawn,"player","player_respawn")
}
public client_putinserver(id){
if(is_user_connected(id)){
get_user_name(id,name,31)
get_configsdir(configsDir, 63)
formatex( q_money, charsmax(q_money), "/%s/money_team/%s.txt", configsDir,name )
if(file_exists(q_money)) {
server_print("%s уже существует", q_money)
}
new fileid = fopen(q_money,"rt")
if(fileid){
new text[512]
new tex = fgets(fileid,text,charsmax(text))
cs_set_user_money (id, str_to_num(text))
server_print("игроку %s восстановлен баланс %s$" ,name , tex)
}
fclose(fileid)
}
}
public client_disconnect(id){
get_user_name(id,name,31)
get_configsdir(configsDir, 63)
formatex( q_money, charsmax(q_money), "/%s/money_team/%s.txt", configsDir,name )
new text[122]
formatex( text, 121, "%d", cs_get_user_money(id))
write_file(q_money,text,0)
server_print("игроку %s сохранено %d$" ,name , cs_get_user_money(id))
}
public player_respawn(id){
set_task(1.0, "q_spawn", id)
}
public q_spawn(id){
if(g_credit[id] == 0 ){
if(cs_get_user_money(id) < get_cvar_num("mp_startmoney")){
menu(id)
}
}
}
public menu(id){
new A = get_cvar_num("money_credit_min")
new B = get_cvar_num("money_credit_max")
MyInteger = random_num(A,B)
new menu = menu_create("\yВас приветствует меню кредита","cr_menu")
new m1[256]
formatex( m1, charsmax(m1), "\wВзять кредит \r^4%d $\w ?", MyInteger)
menu_additem(menu,m1,"1",0)
menu_additem(menu,"\yОтказаться","2",0)
menu_setprop(menu,MPROP_EXIT,MEXIT_ALL)
menu_display(id,menu,0)
}
public cr_menu(id,menu,item){
if(item==MENU_EXIT)
{
menu_destroy(menu)
return PLUGIN_HANDLED
}
new data[6], iName[64]
new access, callback
menu_item_getinfo(menu, item, access, data,5, iName, 63, callback);
new key = str_to_num(data)
switch(key)
{
case 1 : {
cs_set_user_money (id, cs_get_user_money(id) + MyInteger)
get_user_name(id,name,31)
get_configsdir(configsDir, 63)
formatex( q_money, charsmax(q_money), "/%s/money_team/%s.txt", configsDir,name )
new text[122]
formatex( text, 121, "%d", MyInteger)
write_file(q_money,text,1)
g_credit[id] = 1
}
case 2 : {
}
}
return PLUGIN_HANDLED
}