Код за потвърждение: Избери целия код
L 05/06/2018 - 09:22:39: Start of error session.
L 05/06/2018 - 09:22:39: Info (map "de_dust2") (file "addons/amxmodx/logs/error_20180506.log")
L 05/06/2018 - 09:22:39: Couldn't write file "cstrike/addons/amxmodx/configs/bankomati/de_dust2_bankomati.cfg"
L 05/06/2018 - 09:22:39: [AMXX] Run time error 10 (plugin "bankomati.amxx") (native "write_file") - debug not enabled!
L 05/06/2018 - 09:22:39: [AMXX] To enable debug mode, add "debug" after the plugin name in plugins.ini (without quotes).
Plugin:
Код за потвърждение: Избери целия код
#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <fakemeta_util>
#define PLUGIN "Bankomati"
#define VERSION "1.0"
#define AUTHOR "RePhantom"
#define MINS Float:{-27.309999, -8.780000, -50.000000}
#define MAXS Float:{27.309999, 8.780000, 50.000000}
#define EXTRAOFFSET 5
#define OFFSET_MONEY 115
#pragma semicolon 1
new const atm_classname[] = "atm_class";
new const gModelAtm[] = "models/bankomati/bankomati.mdl";
new const g_iSound_Win[] = "bankomati/fitorja.wav";
new const g_iSound_Loss[] = "bankomati/humbja.wav";
new g_iUsed[33];
new g_MaxUse;
new g_iKeys = MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_5|MENU_KEY_0;
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR);
register_dictionary("bankomati.txt");
register_forward(FM_PlayerPreThink, "fw_PreThink");
register_menu("AtmMain", g_iKeys, "atm_main");
register_clcmd("say /bankomati", "AtmOpenMain");
register_event("HLTV", "NewRound", "a", "1=0", "2=0");
bankomati_instalimi();
}
public plugin_cfg()
g_MaxUse = register_cvar("atm_max_use", "1");
public plugin_precache()
{
engfunc(EngFunc_PrecacheModel, gModelAtm);
engfunc(EngFunc_PrecacheSound, g_iSound_Win);
engfunc(EngFunc_PrecacheSound, g_iSound_Loss);
}
public client_connect(id)
g_iUsed[id] = 0;
public client_disconnect(id)
g_iUsed[id] = 0;
public bankomati_instalimi()
{
static sConfigsDir[256], sFile[256], BankomatiDir[256];
get_configsdir(sConfigsDir, sizeof sConfigsDir - 1);
static sMapName[32];
get_mapname(sMapName, sizeof sMapName - 1);
formatex(BankomatiDir, sizeof BankomatiDir - 1,"%s/Bankomati",sConfigsDir);
formatex(sFile, sizeof sFile - 1, "%s/%s_bankomati.cfg",BankomatiDir,sMapName);
if(!dir_exists(BankomatiDir))
{
server_print("[Bankomati] File nuk egziston ne kete folder!");
return 0;
}
if(!file_exists(sFile))
{
server_print("[Bankomati] File me origjine nuk egziston ne kete folder!");
return 0;
}
static sFileOrigin[3][32], sFileAngles[3][32], iLine, iLength, sBuffer[256];
static sTemp1[128], sTemp2[128];
static Float:fOrigin[3], Float:fAngles[3];
while(read_file(sFile, iLine++, sBuffer, sizeof sBuffer - 1, iLength))
{
if((sBuffer[0]==';') || !iLength)
continue;
strtok(sBuffer, sTemp1, sizeof sTemp1 - 1, sTemp2, sizeof sTemp2 - 1, '|', 0);
parse(sTemp1, sFileOrigin[0], sizeof sFileOrigin[] - 1, sFileOrigin[1], sizeof sFileOrigin[] - 1, sFileOrigin[2], sizeof sFileOrigin[] - 1);
fOrigin[0] = str_to_float(sFileOrigin[0]);
fOrigin[1] = str_to_float(sFileOrigin[1]);
fOrigin[2] = str_to_float(sFileOrigin[2]);
parse(sTemp2, sFileAngles[0], sizeof sFileAngles[] - 1, sFileAngles[1], sizeof sFileAngles[] - 1, sFileAngles[2], sizeof sFileAngles[] - 1);
fAngles[0] = str_to_float(sFileAngles[0]);
fAngles[1] = str_to_float(sFileAngles[1]);
fAngles[2] = str_to_float(sFileAngles[2]);
create_atm(fOrigin);
}
return 0;
}
public AtmOpenMain(id)
{
new iMenu[512], iLen;
iLen = formatex(iMenu[iLen], charsmax(iMenu) - iLen, "\r[\y~\r] \wInstalo Bankomatin (Aparatin)^n^n");
iLen += formatex(iMenu[iLen], charsmax(iMenu) - iLen, "\r[\y1\r]\w Vendose Bankomatin \y(shikoni)^n");
iLen += formatex(iMenu[iLen], charsmax(iMenu) - iLen, "\r[\y2\r]\w Ktheje/Rrotulloje Bankomatin \y(shikoni)^n");
iLen += formatex(iMenu[iLen], charsmax(iMenu) - iLen, "\r[\y3\r]\w Fshije Bankomatin \y(shikoni)^n");
iLen += formatex(iMenu[iLen], charsmax(iMenu) - iLen, "\r[\y4\r]\w Fshini te gjithe bankomatat^n");
iLen += formatex(iMenu[iLen], charsmax(iMenu) - iLen, "\r[\y5\r]\w Ruani Ndryshimet^n^n");
iLen += formatex(iMenu[iLen], charsmax(iMenu) - iLen, "\r[\y0\r]\w Mbylleni");
show_menu(id, g_iKeys, iMenu, -1, "AtmMain");
}
public atm_main(id, key)
{
switch(key)
{
case 0: { CreateAtm(id); AtmOpenMain(id); }
case 1: { RotateAtm(id); AtmOpenMain(id); }
case 2: { DeleteAtm(id); AtmOpenMain(id); }
case 3: { DeleteAllAtm(id); AtmOpenMain(id); }
case 4: { SaveAtm(id); AtmOpenMain(id); }
}
}
public CreateAtm(id)
{
if(~get_user_flags(id) & ADMIN_RCON)
return;
new Float:fOrigin[3], origin[3], name[32], map[32];
get_user_origin(id, origin,3);
IVecFVec(origin, fOrigin);
if((engfunc(EngFunc_PointContents, fOrigin) != CONTENTS_SKY) && (engfunc(EngFunc_PointContents, fOrigin) != CONTENTS_SOLID))
{
get_user_name(id, name, sizeof name - 1);
get_mapname(map, sizeof map - 1);
log_to_file("bankomati.log","[%s] ka krijuar bankomat ne mapen %s", name,map);
create_atm(fOrigin);
ChatColor(id, "%L", LANG_PLAYER, "SUCC_ADD", origin[0], origin[1], origin[2]);
ChatColor(id, "%L", LANG_PLAYER, "SAVE_INFO");
}
else
ChatColor(id, "%L", LANG_PLAYER, "LOCATION_UN");
}
public DeleteAtm(id)
{
if(~get_user_flags(id) & ADMIN_RCON)
return;
static ent, body, name[32], map[32];
get_user_aiming(id, ent, body);
if(pev_valid(ent))
{
static classname[32];
pev(ent, pev_classname, classname, sizeof classname - 1);
if(!strcmp(classname, atm_classname, 1))
{
get_user_name(id, name, sizeof name - 1);
get_mapname(map, sizeof map - 1);
log_to_file("bankomati.log","[%s] bankomatin e ka fshire nga mapa %s", name,map);
engfunc(EngFunc_RemoveEntity, ent);
ChatColor(id, "%L", LANG_PLAYER, "SUCC_REMOVE");
}
}
}
public DeleteAllAtm(id)
{
if(~get_user_flags(id) & ADMIN_RCON)
return;
new ent = -1, count,name[32], map[32];
count = 0;
while((ent = fm_find_ent_by_class(ent, atm_classname)))
{
count++;
engfunc(EngFunc_RemoveEntity, ent);
}
ChatColor(id, "%L", LANG_PLAYER, "REMOVE_ALL", count);
get_user_name(id,name,sizeof name - 1);
get_mapname(map,sizeof map - 1);
log_to_file("bankomati.log","[%s] ka fshire te gjithe bankomatat nga mapa %s",name,map);
ChatColor(id, "%L", LANG_PLAYER, "SAVE_INFO");
}
public SaveAtm(id)
{
if(~get_user_flags(id) & ADMIN_RCON)
return;
static sConfigsDir[256], sFile[256], AtmDir[256], name[32], map[32];
get_configsdir(sConfigsDir, sizeof sConfigsDir - 1);
static sMapName[32];
get_mapname(sMapName, sizeof sMapName - 1);
formatex(AtmDir, sizeof AtmDir - 1,"%s/bankomati", sConfigsDir);
formatex(sFile, sizeof sFile - 1, "%s/%s_bankomati.cfg", AtmDir, sMapName);
if(file_exists(sFile))
delete_file(sFile);
new iEnt = -1, Float:fEntOrigin[3], Float:fEntAngles[3], iCount;
static sBuffer[256];
while((iEnt = engfunc(EngFunc_FindEntityByString, iEnt, "classname", atm_classname)))
{
pev(iEnt, pev_origin, fEntOrigin);
pev(iEnt, pev_angles, fEntAngles);
formatex(sBuffer, sizeof sBuffer - 1, "%f %f %f | %f %f %f", fEntOrigin[0], fEntOrigin[1], fEntOrigin[2], fEntAngles[0], fEntAngles[1], fEntAngles[2]);
write_file(sFile, sBuffer, -1);
iCount++;
}
get_user_name(id,name,sizeof name - 1);
get_mapname(map,sizeof map - 1);
log_to_file("bankomati.log", "[%s] ka ruajtur bankomatin ne map %s", name, map);
ChatColor(id, "%L", LANG_PLAYER, "SUCC_SAVE", iCount, sMapName);
}
public RotateAtm(id)
{
if(~get_user_flags(id) & ADMIN_RCON)
return;
static ent, body, name[32], map[32];
get_user_aiming(id, ent, body);
if(pev_valid(ent))
{
static sClassname[32];
pev(ent, pev_classname, sClassname, sizeof sClassname - 1);
if(!strcmp(sClassname, atm_classname, 1))
{
static Float:fAngles[3];
pev(ent, pev_angles, fAngles);
fAngles[1] += 90.0;
set_pev(ent, pev_angles, fAngles);
get_user_name(id, name,sizeof name - 1);
get_mapname(map, sizeof map - 1);
log_to_file("bankomati.log", "[%s] ka rrotolluar bankomatin ne map %s", name, map);
ChatColor(id, "%L", LANG_PLAYER, "SUCC_ROTATE");
}
}
}
public create_atm(Float:fOrigin[3])
{
new ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"));
engfunc(EngFunc_SetOrigin, ent, fOrigin);
if(!pev_valid(ent))
return 0;
engfunc(EngFunc_SetModel,ent, gModelAtm);
set_pev(ent,pev_classname, atm_classname);
dllfunc(DLLFunc_Spawn, ent);
set_pev(ent, pev_solid, SOLID_BBOX);
set_pev(ent, pev_movetype, MOVETYPE_FLY);
engfunc(EngFunc_SetSize,ent, MINS, MAXS);
fm_set_rendering(ent, kRenderFxGlowShell, 50, 200, 50, kRenderNormal, 16);
return 0;
}
public fw_PreThink(id)
{
static temp, target;
get_user_aiming(id, target, temp);
new szName[32];
get_user_name(id, szName, 31);
if((pev(id, pev_button) & IN_USE) && !(pev(id, pev_oldbuttons) & IN_USE))
{
get_user_aiming(id, target, temp);
if(!pev_valid(target))
return FMRES_IGNORED;
static classname[32];
pev(target, pev_classname, classname, sizeof classname - 1);
new RandomNum = random_num(1, 100);
if(equali(classname, atm_classname))
{
if(g_iUsed[id] >= get_pcvar_num(g_MaxUse))
{
ChatColor(id, "%L", LANG_PLAYER, "MAX_USE");
return FMRES_IGNORED;
}
if(RandomNum <= 50)
{
ChatColor(id, "%L", LANG_PLAYER, "UN_LUCKY");
client_cmd(id, "spk ^"%s^"", g_iSound_Loss);
}
else if(RandomNum >= 50 && RandomNum <= 80)
{
fm_cs_set_user_money(id, fm_cs_get_user_money(id) + 2000);
client_cmd(id, "spk ^"%s^"", g_iSound_Win);
ChatColor(id, "%L", LANG_PLAYER, "THE_WIN1");
}
else if(RandomNum >= 80 && RandomNum <= 90)
{
fm_cs_set_user_money(id, fm_cs_get_user_money(id) + 5000);
client_cmd(id, "spk ^"%s^"", g_iSound_Win);
ChatColor(id, "%L", LANG_PLAYER, "THE_WIN2");
}
else if(RandomNum >= 95 && RandomNum <= 100)
{
fm_cs_set_user_money(id, fm_cs_get_user_money(id) + 16000);
client_cmd(id, "spk ^"%s^"", g_iSound_Win);
ChatColor(0, "%L", LANG_PLAYER, "THE_WIN3", szName);
}
g_iUsed[id]++;
}
}
return FMRES_IGNORED;
}
public NewRound()
{
for(new i = 0; i < 33; i++)
{
if(is_user_connected(i))
{
if(g_iUsed[i] >= 1) g_iUsed[i] = 0;
}
}
}
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();
}
}
}
}
stock fm_cs_get_user_money(client)
{
return get_pdata_int(client, OFFSET_MONEY, EXTRAOFFSET);
}
stock fm_cs_set_user_money(client, money, flash=1)
{
set_pdata_int(client, OFFSET_MONEY, money, EXTRAOFFSET);
static Money;
if( Money || (Money = get_user_msgid("Money")) )
{
emessage_begin(MSG_ONE_UNRELIABLE, Money, _, client);
ewrite_long(money);
ewrite_byte(flash ? 1 : 0);
emessage_end();
}
}