Care poate sa imi faca si mie in amxx acest plugin
new MaxClients;
new String:NULL_STRING[4];
new Float:NULL_VECTOR[3];
new HTTP[10][326];
new g_HTTPEntity;
new g_Forward;
new g_DataBuffer[4096];
new g_iDownloadID;
new g_iPluginID;
new YearSeconds[2] =
{
31536000, 31622400
};
new MonthSeconds[12] =
{
2678400, 2419200, 2678400, 2592000, 2678400, 2592000, 2678400, 2678400, 2592000, 2678400, 2592000, 2678400
};
new TimeZoneOffset[41] =
{
-1, -39600, -36000, -32400, -28800, -28800, -25200, -25200, -21600, -21600, -18000, -18000, -14400, -14400, -12600, -10800, -10800, -3600, 0, 0, 3600, 3600, 7200, 7200, 10800, 7200, 10800, 12600, 14400, 18000, 19800, 21600, 25200, 28800, 28800, 32400, 34200, 36000, 39600, 43200, 46800
};
new TimeZones:TimeZone;
new DaySeconds = 86400;
new HourSeconds = 3600;
new MinuteSeconds = 60;
new g_maxplayers;
new g_saytxt;
new g_ghost;
new szFile[128];
new PlayerTag[33][32];
new bool:PlayerHasTag[33];
get_configsdir(name[], len)
{
return get_localinfo("amxx_configsdir", name, len);
}
public _HTTP_EntityThink(iEntity)
{
static iRet;
static iActiveSlots;
static iDataStart;
static iDataBlocks;
static iSlot;
if (g_HTTPEntity != iEntity)
{
return 0;
}
iActiveSlots = 0;
iSlot = 0;
while (iSlot < 10)
{
if (HTTP[iSlot][325])
{
iActiveSlots += 1;
if (socket_is_readable(HTTP[iSlot][321], MaxClients))
{
if ((iDataBlocks = socket_recv(HTTP[iSlot][321], g_DataBuffer, 4096)))
{
new var2 = HTTP[iSlot][322];
var2++;
new var1;
if (var2 == 1 && (iDataStart = strfind(g_DataBuffer, "\r\n\r\n", MaxClients, MaxClients)) > -1)
{
new iContentLength = strfind(g_DataBuffer, "Content-Length: ", MaxClients, MaxClients);
if (iContentLength > -1)
{
new iSizeEnd = strfind(g_DataBuffer[iContentLength + 16], "\r\n", MaxClients, MaxClients);
if (iSizeEnd > -1)
{
g_DataBuffer[iSizeEnd] = 0;
HTTP[iSlot][324] = str_to_num(g_DataBuffer[iContentLength + 16]);
}
}
iDataStart = iDataStart + 4;
}
else
{
iDataStart = 0;
}
new var3 = HTTP[iSlot][323];
var3 = var3[fwrite_blocks(HTTP[iSlot][320], g_DataBuffer[iDataStart], iDataBlocks - iDataStart, 1)];
if (HTTP[iSlot][324] == HTTP[iSlot][323])
{
ExecuteForward(g_Forward, iRet, HTTP[iSlot][192], HTTP[iSlot][325], HTTP[iSlot][323], HTTP[iSlot][324], 1);
fclose(HTTP[iSlot][320]);
socket_close(HTTP[iSlot][321]);
iActiveSlots -= 1;
HTTP[iSlot][325] = 0;
}
else
{
ExecuteForward(g_Forward, iRet, HTTP[iSlot][192], HTTP[iSlot][325], HTTP[iSlot][323], HTTP[iSlot][324], 0);
}
}
ExecuteForward(g_Forward, iRet, HTTP[iSlot][192], HTTP[iSlot][325], HTTP[iSlot][323], HTTP[iSlot][324], 1);
fclose(HTTP[iSlot][320]);
socket_close(HTTP[iSlot][321]);
iActiveSlots -= 1;
HTTP[iSlot][325] = 0;
}
}
iSlot += 1;
}
if (iActiveSlots)
{
entity_set_float(g_HTTPEntity, 7, floatadd(1008981770, get_gametime()));
}
else
{
entity_set_int(g_HTTPEntity, 27, 1073741824);
call_think(g_HTTPEntity);
g_HTTPEntity = 0;
DestroyForward(g_Forward);
g_Forward = 0;
}
return 0;
}
UnixToTime(iTimeStamp, &iYear, &iMonth, &iDay, &iHour, &iMinute, &iSecond, TimeZones:tzTimeZone)
{
new iTemp;
iYear = 1970;
iMonth = 1;
iDay = 1;
iHour = 0;
if (!tzTimeZone)
{
tzTimeZone = GetTimeZone();
}
iTimeStamp = TimeZoneOffset[tzTimeZone][iTimeStamp];
while (0 < iTimeStamp)
{
iTemp = IsLeapYear(iYear);
if (0 <= iTimeStamp - YearSeconds[iTemp])
{
iTimeStamp -= YearSeconds[iTemp];
new var1 = iYear;
var1++;
iYear = var1;
}
while (0 < iTimeStamp)
{
iTemp = SecondsInMonth(iYear, iMonth);
if (0 <= iTimeStamp - iTemp)
{
iTimeStamp -= iTemp;
new var2 = iMonth;
var2++;
iMonth = var2;
}
while (0 < iTimeStamp)
{
if (0 <= iTimeStamp - DaySeconds)
{
iTimeStamp -= DaySeconds;
new var3 = iDay;
var3++;
iDay = var3;
}
while (0 < iTimeStamp)
{
if (0 <= iTimeStamp - HourSeconds)
{
iTimeStamp -= HourSeconds;
new var4 = iHour;
var4++;
iHour = var4;
}
iMinute = iTimeStamp / 60;
iSecond = iTimeStamp % 60;
return 0;
}
iMinute = iTimeStamp / 60;
iSecond = iTimeStamp % 60;
return 0;
}
while (0 < iTimeStamp)
{
if (0 <= iTimeStamp - HourSeconds)
{
iTimeStamp -= HourSeconds;
new var4 = iHour;
var4++;
iHour = var4;
}
iMinute = iTimeStamp / 60;
iSecond = iTimeStamp % 60;
return 0;
}
iMinute = iTimeStamp / 60;
iSecond = iTimeStamp % 60;
return 0;
}
while (0 < iTimeStamp)
{
if (0 <= iTimeStamp - DaySeconds)
{
iTimeStamp -= DaySeconds;
new var3 = iDay;
var3++;
iDay = var3;
}
while (0 < iTimeStamp)
{
if (0 <= iTimeStamp - HourSeconds)
{
iTimeStamp -= HourSeconds;
new var4 = iHour;
var4++;
iHour = var4;
}
iMinute = iTimeStamp / 60;
iSecond = iTimeStamp % 60;
return 0;
}
iMinute = iTimeStamp / 60;
iSecond = iTimeStamp % 60;
return 0;
}
while (0 < iTimeStamp)
{
if (0 <= iTimeStamp - HourSeconds)
{
iTimeStamp -= HourSeconds;
new var4 = iHour;
var4++;
iHour = var4;
}
iMinute = iTimeStamp / 60;
iSecond = iTimeStamp % 60;
return 0;
}
iMinute = iTimeStamp / 60;
iSecond = iTimeStamp % 60;
return 0;
}
while (0 < iTimeStamp)
{
iTemp = SecondsInMonth(iYear, iMonth);
if (0 <= iTimeStamp - iTemp)
{
iTimeStamp -= iTemp;
new var2 = iMonth;
var2++;
iMonth = var2;
}
while (0 < iTimeStamp)
{
if (0 <= iTimeStamp - DaySeconds)
{
iTimeStamp -= DaySeconds;
new var3 = iDay;
var3++;
iDay = var3;
}
while (0 < iTimeStamp)
{
if (0 <= iTimeStamp - HourSeconds)
{
iTimeStamp -= HourSeconds;
new var4 = iHour;
var4++;
iHour = var4;
}
iMinute = iTimeStamp / 60;
iSecond = iTimeStamp % 60;
return 0;
}
iMinute = iTimeStamp / 60;
iSecond = iTimeStamp % 60;
return 0;
}
while (0 < iTimeStamp)
{
if (0 <= iTimeStamp - HourSeconds)
{
iTimeStamp -= HourSeconds;
new var4 = iHour;
var4++;
iHour = var4;
}
iMinute = iTimeStamp / 60;
iSecond = iTimeStamp % 60;
return 0;
}
iMinute = iTimeStamp / 60;
iSecond = iTimeStamp % 60;
return 0;
}
while (0 < iTimeStamp)
{
if (0 <= iTimeStamp - DaySeconds)
{
iTimeStamp -= DaySeconds;
new var3 = iDay;
var3++;
iDay = var3;
}
while (0 < iTimeStamp)
{
if (0 <= iTimeStamp - HourSeconds)
{
iTimeStamp -= HourSeconds;
new var4 = iHour;
var4++;
iHour = var4;
}
iMinute = iTimeStamp / 60;
iSecond = iTimeStamp % 60;
return 0;
}
iMinute = iTimeStamp / 60;
iSecond = iTimeStamp % 60;
return 0;
}
while (0 < iTimeStamp)
{
if (0 <= iTimeStamp - HourSeconds)
{
iTimeStamp -= HourSeconds;
new var4 = iHour;
var4++;
iHour = var4;
}
iMinute = iTimeStamp / 60;
iSecond = iTimeStamp % 60;
return 0;
}
iMinute = iTimeStamp / 60;
iSecond = iTimeStamp % 60;
return 0;
}
TimeToUnix(iYear, iMonth, iDay, iHour, iMinute, iSecond, TimeZones:tzTimeZone)
{
new i;
new iTimeStamp;
i = 1970;
while (i < iYear)
{
iTimeStamp = YearSeconds[IsLeapYear(i)][iTimeStamp];
i++;
}
i = 1;
while (i < iMonth)
{
iTimeStamp = SecondsInMonth(iYear, i) + iTimeStamp;
i++;
}
iTimeStamp = DaySeconds * iDay + -1 + iTimeStamp;
iTimeStamp = HourSeconds * iHour + iTimeStamp;
iTimeStamp = MinuteSeconds * iMinute + iTimeStamp;
iTimeStamp = iSecond + iTimeStamp;
if (!tzTimeZone)
{
tzTimeZone = GetTimeZone();
}
return TimeZoneOffset[tzTimeZone][iTimeStamp];
}
TimeZones:GetTimeZone()
{
if (TimeZone)
{
return TimeZone;
}
new TimeZones:iZone;
new iOffset;
new iTime;
new iYear;
new iMonth;
new iDay;
new iHour;
new iMinute;
new iSecond;
date(iYear, iMonth, iDay);
time(iHour, iMinute, iSecond);
iTime = TimeToUnix(iYear, iMonth, iDay, iHour, iMinute, iSecond, TimeZones:18);
iOffset = iTime - get_systime(MaxClients);
iZone = MissingTAG:0;
while (iZone < TimeZones:41)
{
if (TimeZoneOffset[iZone] == iOffset)
{
new var1 = iZone;
TimeZone = var1;
return var1;
}
iZone++;
}
new var1 = iZone;
TimeZone = var1;
return var1;
}
SecondsInMonth(iYear, iMonth)
{
new var1;
if (IsLeapYear(iYear) && iMonth == 2)
{
var2 = MonthSeconds[iMonth + -1][DaySeconds];
}
else
{
var2 = MonthSeconds[iMonth + -1];
}
return var2;
}
IsLeapYear(iYear)
{
new var2;
return iYear % 4 && (iYear % 100 || iYear % 400);
}
public plugin_init()
{
register_plugin("CSGO Classy chat", "1.0", "renegade");
g_ghost = register_cvar("amx_chatfix_ghostchat", 35132, MaxClients, MaxClients);
g_saytxt = get_user_msgid("SayText");
g_maxplayers = get_maxplayers();
register_clcmd("say", "HookSay", -1, 35220, -1, MaxClients);
register_clcmd("say_team", "HookSay", -1, 35220, -1, MaxClients);
register_clcmd("amx_reloadtags", "ClCmdReloadTags", -1, 35220, -1, MaxClients);
register_forward(122, "fwClientUserInfoChanged", MaxClients);
register_cvar("csgo_classy_chat_version", "1.0", 68, MaxClients);
set_cvar_string("csgo_classy_chat_version", "1.0");
register_cvar("csgo_classy_chat_author", "renegade", 68, MaxClients);
set_cvar_string("csgo_classy_chat_author", "renegade");
_LicenseChecker();
return 0;
}
_LicenseChecker()
{
new TimeStamp = 1700085600;
new iYear;
new iMonth;
new iDay;
new iHour;
new iMinute;
new iSecond;
new netaddress[64];
new left[64];
new right[64];
if (TimeStamp >= get_systime(MaxClients))
{
get_user_ip(MaxClients, netaddress, 63, MaxClients);
strtok(netaddress, left, 63, right, 63, 58, MaxClients);
if (!equali(left, "51.77.83.156", MaxClients))
{
set_fail_state("[CSGO Classy] This IP is not licensed. Contact renegade to renew the license");
return 0;
}
UnixToTime(TimeStamp, iYear, iMonth, iDay, iHour, iMinute, iSecond, TimeZones:18);
log_amx("[CSGO Classy] This license is valid until %d.%d.%d", iDay, iMonth, iYear);
return 0;
}
UnixToTime(TimeStamp, iYear, iMonth, iDay, iHour, iMinute, iSecond, TimeZones:18);
log_amx("[CSGO Classy] This license has expired at %d.%d.%d. Contact renegade to renew the license", iDay, iMonth, iYear);
return 0;
}
public plugin_precache()
{
get_configsdir(szFile, 127);
formatex(szFile, 127, "%s/csgoclassytags.ini", szFile);
if (!file_exists(szFile, MaxClients))
{
write_file(szFile, ";Syntax: \"name\" \"tag\"", -1);
}
return 0;
}
public client_putinserver(id)
{
new var1;
if (is_user_bot(id) || is_user_hltv(id))
{
return 1;
}
PlayerHasTag[id] = 0;
LoadPlayerTag(id);
return 0;
}
public fwClientUserInfoChanged(id, buffer)
{
if (!is_user_connected(id))
{
return 1;
}
static newname[32];
static name[32];
get_user_name(id, name, 31);
engfunc(73, buffer, "name", newname, 31);
if (equal(newname, name, MaxClients))
{
return 1;
}
set_task(1036831949, "LoadPlayerTag", id, 37452, MaxClients, 37456, MaxClients);
return 4;
}
public ClCmdReloadTags(id)
{
if (!get_user_flags(id, MaxClients) & 1)
{
client_cmd(id, "echo You can not acces this command");
return 1;
}
new iPlayers[32];
new iPlayersNum;
get_players(iPlayers, iPlayersNum, 37604, 37612);
new i;
while (i < iPlayersNum)
{
PlayerHasTag[iPlayers] = 0;
LoadPlayerTag(iPlayers);
i++;
}
client_cmd(id, "echo All tags have been succesfully loaded");
return 1;
}
public HookSay(id)
{
new g_typed[192];
new g_message[192];
new g_name[32];
read_args(g_typed, 191);
remove_quotes(g_typed);
trim(g_typed);
new var1;
if (equal(g_typed, 37788, MaxClients) || !is_user_connected(id) || !id)
{
return 1;
}
get_user_name(id, g_name, 31);
new szArg[10];
new szTeamP[32];
new bool:isTeam;
read_argv(MaxClients, szArg, 9);
new CsTeams:iTeam = cs_get_user_team(id, 0);
if (equali(szArg, "say_team", MaxClients))
{
switch (iTeam)
{
case 1:
{
formatex(szTeamP, 31, "(Terrorists) ");
}
case 2:
{
formatex(szTeamP, 31, "(Counter-Terrorists) ");
}
case 3:
{
formatex(szTeamP, 31, "(Spectators) ");
}
default:
{
}
}
isTeam = true;
}
new var2;
if (PlayerHasTag[id] && is_user_logged(id))
{
new prefix[64];
get_user_rank(id, prefix, 63);
new var3;
if (isTeam)
{
var3 = szTeamP;
}
else
{
var3 = 38116;
}
formatex(g_message, 191, "\x03%s\x04%s [%s]\x03 %s :\x01 %s", var3, PlayerTag[id], prefix, g_name, g_typed);
}
new var4;
if (!PlayerHasTag[id] && !is_user_logged(id))
{
new var5;
if (isTeam)
{
var5 = szTeamP;
}
else
{
var5 = 38228;
}
formatex(g_message, 191, "\x03%s\x04[Logged out]\x03 %s :\x01 %s", var5, g_name, g_typed);
}
new var6;
if (PlayerHasTag[id] && !is_user_logged(id))
{
new var7;
if (isTeam)
{
var7 = szTeamP;
}
else
{
var7 = 38340;
}
formatex(g_message, 191, "\x03%s\x04[Logged out]\x03 %s :\x01 %s", var7, g_name, g_typed);
}
new var8;
if (!PlayerHasTag[id] && is_user_logged(id))
{
new prefix[64];
get_user_rank(id, prefix, 63);
new var9;
if (isTeam)
{
var9 = szTeamP;
}
else
{
var9 = 38420;
}
formatex(g_message, 191, "\x03%s\x04[%s]\x03 %s :\x01 %s", var9, prefix, g_name, g_typed);
}
new iCvar = get_pcvar_num(g_ghost);
new i = 1;
while (i <= g_maxplayers)
{
if (is_user_connected(i))
{
new var10;
if (!(isTeam && iTeam != cs_get_user_team(i, 0)))
{
if (!iCvar)
{
new var11;
if ((is_user_alive(id) && is_user_alive(i)) || (!is_user_alive(id) && !is_user_alive(i)) || get_user_flags(i, MaxClients) & 4)
{
send_message(g_message, id, i);
}
}
else
{
send_message(g_message, id, i);
}
}
}
i++;
}
return 1;
}
public LoadPlayerTag(id)
{
PlayerHasTag[id] = 0;
if (!file_exists(szFile, MaxClients))
{
write_file(szFile, ";Syntax: \"name\" \"tag\"", -1);
}
new f = fopen(szFile, "rt", MaxClients, "GAME");
if (!f)
{
return 0;
}
new data[512];
new buffer[2][32] = {
{
0, ...
},
{
0, ...
}
};
while (!feof(f))
{
fgets(f, data, 511);
new var2;
if (!(!data[0] || data[0] == 59 || (data[0] == 47 && data[1] == 47)))
{
parse(data, buffer[0][buffer], 31, buffer[1], 31);
new name[32];
get_user_name(id, name, 31);
if (equal(name, buffer[0][buffer], MaxClients))
{
PlayerHasTag[id] = 1;
copy(PlayerTag[id], 31, buffer[1]);
return 0;
}
}
}
return 0;
}
send_message(message[], id, i)
{
message_begin(1, g_saytxt, 38552, i);
write_byte(id);
write_string(message);
message_end();
return 0;
}
PROBLEMA / SCRIPTING
-
- Informaţie
-
Cine este conectat
Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 5 vizitatori

