Mam problem, że w expmodzie napisanym przez MarWita nie mogę wbijać lvli. W ogóle plugina nie widzi Chodzi o to, by maks. lvl wynosił 100. Zapis nvault, exp ma lecieć wolno. Jakieś /top10 i /exprank by się przydało To tyle Mogę zapłacić sms'em za 2x 11,07zł jeżeli będzie bez crashy. Wyświetlanie się ile expa ktoś dostał tak jak w CODzie. Informacja o przejściu na lvl wyżej z melodyjką. Exp ma lecieć za każde zabójstwo- swojego i przeciwnika, ponieważ plugin ma być przeznaczony na DM.
#include <amxmodx>
#include <nvault>
#include <hamsandwich>
#include <engine>
#include <ColorChat>
#define IsTheSameTeam(%1,%2) ( get_user_team(%1) == get_user_team(%2) )
enum UserInfo {
LEVEL,
EXPERIENCE
}
new g_iMaxPlayers, g_iHudSync;
new g_iUserInfo[UserInfo][33];
new Float:g_fNextRefresh[33];
new g_nVault;
public plugin_init() {
register_plugin("Exp Mod", "0.1", "MarWit")
register_event("DeathMsg", "eventDeathMsg", "a");
RegisterHam(Ham_Spawn, "player", "hamPlayerSpawnPost", 1)
if((g_nVault = nvault_open("ExpMod")) == INVALID_HANDLE)
{
set_fail_state("[ExpMod] The error occurred when opening a file: ExpMod.nvault")
return PLUGIN_HANDLED_MAIN
}
g_iMaxPlayers = get_maxplayers()
g_iHudSync = CreateHudSyncObj()
return PLUGIN_CONTINUE
}
public plugin_end()
nvault_close(g_nVault)
public client_connect(id)
{
g_iUserInfo[LEVEL][id] = g_iUserInfo[EXPERIENCE][id] = 0
LoadPlayer(id)
}
public client_disconnect(id)
SavePlayer(id)
public client_PreThink(id)
{
if(g_fNextRefresh[id] >= get_gametime())
return PLUGIN_CONTINUE
set_hudmessage(255, 255, 255, 0.02, 0.2, 0, 0.0, 0.2, 0.1, 0.1)
ShowSyncHudMsg(id, g_iHudSync, "Poziom: %d^nDoswiadczenie: %d/%d", g_iUserInfo[LEVEL][id], g_iUserInfo[EXPERIENCE][id], ( power(g_iUserInfo[LEVEL][id]+1, 2) * 95 ))
g_fNextRefresh[id] = get_gametime() + 0.25
return PLUGIN_CONTINUE
}
public eventDeathMsg()
{
static iAttacker
static iVictim
iAttacker = read_data(1);
iVictim = read_data(2);
if(g_iUserInfo[LEVEL][iAttacker] >= 100 || IsTheSameTeam(iAttacker, iVictim) || !(1 < iAttacker < g_iMaxPlayers) || !(1 < iVictim < g_iMaxPlayers))
return HAM_IGNORED
if(read_data(3))
g_iUserInfo[EXPERIENCE][iAttacker] += 30 * g_iUserInfo[LEVEL][iAttacker]
else
g_iUserInfo[EXPERIENCE][iAttacker] += 25 * g_iUserInfo[LEVEL][iAttacker]
if(g_iUserInfo[EXPERIENCE][iAttacker] >= power(g_iUserInfo[LEVEL][iAttacker]+1, 2) * 95)
{
g_iUserInfo[LEVEL][iAttacker]++
g_iUserInfo[EXPERIENCE][iAttacker] = 0
ColorChat(iAttacker, RED, "[ExpMod]^x01 Gratulacje! Wbiles nastepny poziom! ")
}
return HAM_IGNORED
}
public hamPlayerSpawnPost(id)
{
new Float:fHealth = entity_get_float(id, EV_FL_health)
fHealth += 10.0 * floatround(g_iUserInfo[LEVEL][id] / 5.0)
entity_set_float(id, EV_FL_health, fHealth)
}
public LoadPlayer(id)
{
new szName[64], szData[2][128];
get_user_name(id, szName, 63)
nvault_get(g_nVault, szName, szData[0], 127)
replace_all(szData[0], 127, "#", " ")
parse(szData[0], szData[0], 127, szData[1], 127)
g_iUserInfo[LEVEL][id] = str_to_num(szData[0])
g_iUserInfo[EXPERIENCE][id] = str_to_num(szData[1])
if(g_iUserInfo[LEVEL][id] <= 0) g_iUserInfo[LEVEL][id] = 1
}
public SavePlayer(id)
{
new szName[64], szData[128];
get_user_name(id, szName, 63)
format(szData, 127, "%d#%d%#", g_iUserInfo[LEVEL][id], g_iUserInfo[EXPERIENCE][id])
nvault_set(g_nVault, szName, szData)
}