/*
Fordította: BBk
*/
#include <sourcemod>
public Plugin:myinfo = {
name = "Infinite Ammo",
author = "twistedeuphoria",
description = "A jatekosoknak vegtelen loszer adas.",
version = "0.5",
url = "http://forums.alliedmods.net/showthread.php?t=55381"
};
new ammo[128];
new activeoffset = 1896
new clipoffset = 1204
new maxclients = 0;
new Handle:enablecvar;
public OnPluginStart()
{
LoadTranslations("common.phrases")
enablecvar = CreateConVar("sm_iammo_enable", "1", "<0|1|2> 0 = vegtelen loszer inaktivalasa; 1 = vegtelen loszer engedelyezese parancs hasznalataval; 2 = a vegtelen loszer automatikusan aktivalodik minden jatekosnak");
CreateConVar("sm_iammo_version", "0.4", "Infinite Ammo Version", FCVAR_REPLICATED|FCVAR_NOTIFY);
HookConVarChange(enablecvar, EnableChanged);
RegAdminCmd("sm_iammo",unlimit, ADMFLAG_KICK,"<felhasznalo id | nev> <0|1> - Vegtelen loszert adni vagy megvonni a jatekosoktol.", "",0);
new off = FindSendPropOffs("CAI_BaseNPC", "m_hActiveWeapon");
if(off != -1)
{
activeoffset = off;
}
off = -1;
off = FindSendPropOffs("CBaseCombatWeapon", "m_iClip1");
if(off != -1)
{
clipoffset = off;
}
maxclients = GetMaxClients();
}
public EnableChanged(Handle:convar, const String:oldValue[], const String:newValue[])
{
if(convar == enablecvar)
{
new oldval = StringToInt(oldValue);
new newval = StringToInt(newValue);
if(newval == oldval) return;
if( (newval != 0) && (newval != 1) && (newval != 2) )
{
PrintToServer("nem ervenyes ertek: sm_iammo_enable %s, valtsd vissza erre: %s", newValue, oldValue);
SetConVarInt(enablecvar, oldval);
}
else
{
if(oldval == 2)
{
PrintToChatAll("A Vegtelen Loszer mindenkitol megvonva!");
for(new i=1;i<maxclients;i++)
{
if(IsValidEntity(i) && IsClientConnected(i))
{
ammo[i] = 0;
}
}
}
if(newval == 2)
{
PrintToChatAll("A Vegtelen Loszer mindenkinel engedelyezve!");
for(new i=1;i<maxclients;i++)
{
if(IsValidEntity(i) && IsClientConnected(i))
{
ammo[i] = 1;
}
}
}
}
}
}
public bool:OnClientConnect(client, String:rejectmsg[], maxlen)
{
if(GetConVarInt(enablecvar) == 2)
{
ammo[client] = 1;
}
return true;
}
public OnClientDisconnect(client)
{
ammo[client] = 0;
}
public Action:unlimit(client,args)
{
new curval = GetConVarInt(enablecvar);
if(curval == 0)
{
PrintToConsole(client, "Vegtelen Loszer jelenleg kikapcsolva.");
return Plugin_Handled;
}
new aid = client;
if(args != 2)
{
PrintToConsole(aid, "Hasznalat: <felhasznalo id | nev> <0|1>");
return Plugin_Handled;
}
new String:idstr[50];
GetCmdArg(1,idstr,50);
new String:switchstr[2];
GetCmdArg(2,switchstr,2);
new targets[1];
new tgtname[50];
new bool:ml;
if(ProcessTargetString(idstr, client, targets, 1, 0, tgtname, 50, ml) != 1)
{
PrintToConsole(client, "A cel nem talalhato.");
return Plugin_Handled;
}
new onoff = StringToInt(switchstr);
ammo[targets[0]] = onoff;
// new String:name[50]
// GetClientName(id, name, 50);
if(onoff)
{
PrintToConsole(aid,"%s vegtelen loszert kapott.",tgtname);
PrintToConsole(targets[0], "Vegtelen loszert kaptal.");
}
else
{
PrintToConsole(aid,"%s vegtelen loszert megvontak.",tgtname);
PrintToConsole(targets[0],"A vegtelen loszered megvontak.");
}
return Plugin_Handled;
}
public OnGameFrame()
{
new zomg;
for(new i=0;i<maxclients;i++)
{
if( (ammo[i] == 1) && IsClientInGame(i))
{
zomg = GetEntDataEnt2(i, activeoffset);
if(IsValidEntity(zomg))
SetEntData(zomg, clipoffset, 50, 4, true);
}
}
}