Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

Лимит денег игрока

Статус пользователя DeathRunLove
сообщение 29.10.2015, 14:03
Сообщение #1
Стаж: 10 лет

Сообщений: 2
Благодарностей: 1
Полезность: 0

Код:
#include <amxmodx>
#include <amxmisc>
#include <hamsandwich>
#include <fakemeta>
#include <nvault>

#define PLUGIN "[DR]MoneySystem"
#define VERSION "1.0"
#define AUTHOR "CrAsH"

new g_Cvar[11]
new g_Vault
new g_RoundEnd

new szPlayerMoney[33]
new szPlayerMoneyNew[33]

public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)

RegisterHam(Ham_Killed, "player", "PlayerKilled")
RegisterHam(Ham_Spawn, "player", "PlayerSpawn", 1)

register_event("HLTV", "RoundStart", "a", "1=0", "2=0")
register_event("SendAudio", "WinT", "a", "2&%!MRAD_terwin")
register_event("SendAudio", "WinCT", "a", "2&%!MRAD_ctwin")
register_event("SendAudio", "Draw", "a", "2&%!MRAD_rounddraw")

g_Cvar[1] = register_cvar("dr_moneysystem_startmoney", "800")

g_Cvar[2] = register_cvar("dr_moneysystem_killmoney", "300")

g_Cvar[3] = register_cvar("dr_moneysystem_winmoney", "2500")
g_Cvar[4] = register_cvar("dr_moneysystem_losemoney", "1500")
g_Cvar[5] = register_cvar("dr_moneysystem_drawmoney", "1000")

g_Cvar[6] = register_cvar("dr_moneysystem_limit", "0")
g_Cvar[7] = register_cvar("dr_moneysystem_limit_player", "150000")
g_Cvar[8] = register_cvar("dr_moneysystem_limit_admin", "500000")

g_Cvar[9] = register_cvar("dr_moneysystem_save", "1")
g_Cvar[10] = register_cvar("dr_moneysystem_save_type", "1")

register_dictionary("dr_moneysystem.txt")
}

public plugin_natives()
{
register_native("dr_get_user_money", "native_dr_get_user_money", 1)
register_native("dr_set_user_money", "native_dr_set_user_money", 1)
}

public RoundStart()
{
g_RoundEnd = false
}

public client_connect(id)
{
if(get_pcvar_num( g_Cvar[9] ))
{
set_task(2.0, "Load", id)
}
}

public Load(id)
{
LoadingMoney(id)
}

public client_disconnect(id)
{
if(get_pcvar_num( g_Cvar[9] ))
{
SaveMoney(id)
}
}

public client_infochanged(id)
{
if(!is_user_connected(id))
{
return PLUGIN_CONTINUE
}

new szNewName[32], szOldName[32]

get_user_name(id, szOldName, charsmax( szOldName ))
get_user_info(id, "name", szNewName, charsmax( szNewName ))

if(!equal(szNewName, szOldName))
{
if(get_pcvar_num( g_Cvar[9] ))
{
SaveMoney(id)

set_task(0.3, "Load", id)
set_task(1.0, "UpdateMoney", id)
}
}
return PLUGIN_CONTINUE
}

public PlayerSpawn(id)
{
set_task(0.1, "UpdateMoney", id)
}

public PlayerKilled(szVictim, szAttacker, szGib)
{
if(!szAttacker || szVictim == szAttacker)
return HAM_IGNORED

if(!is_user_connected( szAttacker ) || !is_user_connected( szVictim ))
return HAM_IGNORED

szPlayerMoneyNew[szAttacker] = get_pcvar_num( g_Cvar[2] )
set_task(0.1, "UpdateMoney", szAttacker)

return HAM_IGNORED
}

public WinT()
{
SetRoundMoney(1)
g_RoundEnd = true
}

public WinCT()
{
SetRoundMoney(2)
g_RoundEnd = true
}

public Draw()
{
SetRoundMoney(3)
g_RoundEnd = true
}

public SetRoundMoney(szType)
{
new szPlayers[32]
new szNum, szPlayer

get_players(szPlayers, szNum)

for(new i;i < szNum; i++)
{
szPlayer = szPlayers[i]

if(!is_user_connected(szPlayer) || get_user_team(szPlayer) == 3 || is_user_bot(szPlayer) || is_user_hltv(szPlayer))
continue

if(szType != 3)
{
if(get_user_team(szPlayer) == szType)
{
szPlayerMoneyNew[szPlayer] = get_pcvar_num( g_Cvar[3] )
}else{
szPlayerMoneyNew[szPlayer] = get_pcvar_num( g_Cvar[4] )
}
}else{
szPlayerMoneyNew[szPlayer] = get_pcvar_num( g_Cvar[5] )
}
}
}

public UpdateMoney(id)
{
set_pdata_int(id, 115, 0, 5)

message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("Money"), _, id)
write_long(szPlayerMoney[id])
write_byte(1)
message_end()

if(g_RoundEnd)
{
szPlayerMoney[id] = szPlayerMoney[id] + get_pcvar_num( g_Cvar[2] )
}else{
szPlayerMoney[id] = szPlayerMoney[id] + szPlayerMoneyNew[id]
szPlayerMoneyNew[id] = 0
}

if(get_pcvar_num( g_Cvar[6] ))
{
if(get_user_flags(id) & ADMIN_LEVEL_H)
{
if(szPlayerMoney[id] > get_pcvar_num( g_Cvar[7] ))
{
szPlayerMoney[id] = get_pcvar_num( g_Cvar[7] )
}
}else{
if(szPlayerMoney[id] > get_pcvar_num( g_Cvar[8] ))
{
szPlayerMoney[id] = get_pcvar_num( g_Cvar[8] )
}
}
}

message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("Money"), _, id)
write_long(szPlayerMoney[id])
write_byte(1)
message_end()
}

public native_dr_get_user_money(id)
{
return szPlayerMoney[id]
}

public native_dr_set_user_money(id, szNum)
{
szPlayerMoney[id] = szNum

message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("Money"), _, id)
write_long(szPlayerMoney[id])
write_byte(1)
message_end()
}

stock LoadingMoney(id)
{
g_Vault = nvault_open("dr_money")

if(g_Vault == INVALID_HANDLE)
{
new szError[512]
formatex(szError, charsmax( szError ), "NVault Error")

set_fail_state( szError )
}

new szKey[64], szData[256]

new szType
szType = get_pcvar_num( g_Cvar[10] )

switch( szType )
{
case 1:
{
new szName[32]
get_user_name(id, szName, charsmax( szName ))

formatex(szKey, charsmax( szKey ),"%s", szName)
formatex(szData, charsmax( szData ), "%i", szPlayerMoney[id])
}

case 2:
{
new szSteamID[32]
get_user_authid(id, szSteamID, charsmax( szSteamID ))

formatex(szKey, charsmax( szKey ),"%s", szSteamID)
formatex(szData, charsmax( szData ), "%i", szPlayerMoney[id])
}

case 3:
{
new szIP[32]
get_user_ip(id, szIP, charsmax( szIP ), 1)

formatex(szKey, charsmax( szKey ),"%s", szIP)
formatex(szData, charsmax( szData ), "%i", szPlayerMoney[id])
}
}
nvault_get(g_Vault, szKey, szData, charsmax( szData ))
szPlayerMoney[id] = str_to_num( szData )

if(szPlayerMoney[id] == 0)
{
szPlayerMoney[id] = get_pcvar_num( g_Cvar[1] )
}
nvault_close(g_Vault)
}

stock SaveMoney(id)
{
g_Vault = nvault_open("dr_money")

if(g_Vault == INVALID_HANDLE)
{
new szError[512]
formatex(szError, charsmax( szError ), "NVault Error")

set_fail_state( szError )
}

new szKey[32], szData[256]

new szType
szType = get_pcvar_num( g_Cvar[10] )

switch( szType )
{
case 1:
{
new szName[32]
get_user_name(id, szName, charsmax( szName ))

formatex(szKey, charsmax( szKey ),"%s", szName)
formatex(szData, charsmax( szData ), "%i", szPlayerMoney[id])
}

case 2:
{
new szSteamID[32]
get_user_authid(id, szSteamID, charsmax( szSteamID ))

formatex(szKey, charsmax( szKey ),"%s", szSteamID)
formatex(szData, charsmax( szData ), "%i", szPlayerMoney[id])
}

case 3:
{
new szIP[32]
get_user_ip(id, szIP, charsmax( szIP ), 1)

formatex(szKey, charsmax( szKey ),"%s", szIP)
formatex(szData, charsmax( szData ), "%i", szPlayerMoney[id])
}
}

nvault_set(g_Vault, szKey, szData)
nvault_close(g_Vault)
}

stock ChatColor(const id, const input[], any:...)
{
new count = 1, players[32]
static msg[191]
vformat(msg, 190, input, 3)

replace_all(msg, 190, "!g", "^4")
replace_all(msg, 190, "!y", "^1")
replace_all(msg, 190, "!t", "^3")

if (id) players[0] = id; else get_players(players, count, "ch")
{
for (new i = 0; i < count; i++)
{
if (is_user_connected(players[i]))
{
message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i]);
write_byte(players[i]);
write_string(msg);
message_end();
}
}
}
}

Здравствуйте, можете показать как сделать лимит денег для каждого игрока по выдачи или чтоб можно было как то прописывать, вообщем чтобы это была покупная функция на сервере, допусти у всех лимит 50к, а какой то игрок за реальные деньги увеличил его до 100к
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: