"mikedmor"
Участник
- Сообщения
- 27
- Реакции
- 1
нетТак "оттелепортируйся", пусть плагин вернёт обратно и лишь после попробуй выкинуть оружие. Выкидывается?
нетТак "оттелепортируйся", пусть плагин вернёт обратно и лишь после попробуй выкинуть оружие. Выкидывается?
после тп оружие не дропается и серв можно крашнутьПробуй, может успеет обработать заранее:PHP:#include <sdkhooks> #include <sdktools> #define TELEPORT_DETECT_THRESHOLD 100.0 new Float:vLastPos[MAXPLAYERS + 1][3], bool:StickWeapon[MAXPLAYERS + 1]; public OnPluginStart() { HookEvent("player_activate", Event_PlayerActivate); HookEvent("player_death", Event_PlayerDeath); AddCommandListener(DropWeapon, "drop"); } public Event_PlayerActivate(Handle:event, const String:name[], bool:dontBroadcast) { SDKHook(GetClientOfUserId(GetEventInt(event, "userid")), SDKHook_SpawnPost, PlayerSpawn); } public PlayerSpawn(client) { GetClientAbsOrigin(client, vLastPos[client]); SDKHook(client, SDKHook_PreThink, PostThinkPost); StickWeapon[client] = false; } public Event_PlayerDeath(Handle:event, const String:name[], bool:dontBroadcast) { SDKUnhook(GetClientOfUserId(GetEventInt(event, "userid")), SDKHook_PreThink, PostThinkPost); } public PostThinkPost(client) { static Float:vCurPos[MAXPLAYERS + 1][3]; GetClientAbsOrigin(client, vCurPos[client]); if (GetVectorDistance(vCurPos[client], vLastPos[client]) < TELEPORT_DETECT_THRESHOLD) { vLastPos[client] = vCurPos[client]; } else { StickWeapon[client] = true; TeleportEntity(client, vLastPos[client], NULL_VECTOR, NULL_VECTOR); } } public Action:DropWeapon(client, const String:name[], args) return StickWeapon[client] ? Plugin_Handled:Plugin_Continue;
нет. Если 1 раз телепортнуться без выбрасывания оружия то больше ты его выбросить не сможешь и соответсвенно крашнуть сервер,но когда на тебе ещё нет запрета на выбрасывание оружия то если одновременно нажать на конпку телепорта и кнопку дропа оружия оружие выбросится в момент телепорта и серв упадёт.Т.е.? Не выкидывается, но всё равно крашится при попытке выброса?
Так и хорошо. Не можешь играть честно, либо вредитель сервера - сиди с ограничениями. Оффтопбольше ты его выбросить не сможешь и соответствено крашнуть сервер
Банить нельзя ибо серв для читеров )00) А как можно разрешить выбрасывание с фризом?Так и хорошо. Не можешь играть честно, либо вредитель сервера - сиди с ограничениями. ОффтопТаких вообще банить в пору, а не просто запрещать выброс оружия.
Выбор невелик: либо запретить выбрасывать оружие всем, либо по какой-то системе (например, новичкам), либо разрешить выбрасывание с "фризом" (только само выбрасывание).
можно разрешить выбрасывание с фризом?
#include <cstrike>
#include <sdkhooks>
#include <sdktools>
#define TELEPORT_DETECT_THRESHOLD 100.0
public Plugin:myinfo =
{
name = "Antiteleport Crash Server",
author = "AlmazON",
description = "Антителепорт и падение сервера от него",
version = "0.1.0",
url = "http://www.hlmod.ru"
}
new Float:vLastPos[MAXPLAYERS + 1][3], DropWeapon[MAXPLAYERS + 1] = {0, 1, ...};
public OnPluginStart() {
HookEvent("player_activate", Event_PlayerActivate);
HookEvent("player_death", Event_PlayerDeath);
}
public Event_PlayerActivate(Handle:event, const String:name[], bool:dontBroadcast) {
SDKHook(GetClientOfUserId(GetEventInt(event, "userid")), SDKHook_SpawnPost, PlayerSpawn);
}
public PlayerSpawn(client) {
GetClientAbsOrigin(client, vLastPos[client]);
SDKHook(client, SDKHook_PostThinkPost, PostThinkPost);
DropWeapon[client] = 1;
}
public Event_PlayerDeath(Handle:event, const String:name[], bool:dontBroadcast) {
SDKUnhook(GetClientOfUserId(GetEventInt(event, "userid")), SDKHook_PostThinkPost, PostThinkPost);
}
public PostThinkPost(client) {
static Float:vCurPos[MAXPLAYERS + 1][3];
GetClientAbsOrigin(client, vCurPos[client]);
if (GetVectorDistance(vCurPos[client], vLastPos[client]) < TELEPORT_DETECT_THRESHOLD) {
vLastPos[client] = vCurPos[client];
}
else {
DropWeapon[client] = 0;
TeleportEntity(client, vLastPos[client], NULL_VECTOR, NULL_VECTOR);
}
}
public OnClientDisconnect_Post(client) DropWeapon[client] = 0;
public Action:CS_OnCSWeaponDrop(client, weaponIndex)
{
if (IsClientInGame(client) && IsValidEntity(weaponIndex) && 0 < GetClientHealth(client))
{
if (DropWeapon[client])
{
CreateTimer(0.0, DelayDrop, client, TIMER_FLAG_NO_MAPCHANGE);
DropWeapon[client] = weaponIndex;
}
return Plugin_Handled;
}
return Plugin_Continue;
}
public Action:DelayDrop(Handle:timer, any:client)
{
if (DropWeapon[client] && IsValidEntity(DropWeapon[client]))
{
for (new slot = CS_SLOT_PRIMARY; slot < CS_SLOT_C4+1; ++slot)
{
if (GetPlayerWeaponSlot(client, slot) == DropWeapon[client])
{
CS_DropWeapon(client, DropWeapon[client], true, true);
break;
}
}
}
return Plugin_Stop;
}
спасибо за помощь ) всё работает. Вредители есть везде (:Думаю, всё вполне получилось. "Фриз" выброса оружия на малом пинге практически не наблюдается.***Скрытый текст***
При попытке "положить" сервер с телепорт-читом, возможность выкинуть оружие будет заблокирована до нового раунда (респауна).ОффтопДаже, если сервер для "читеров", то пусть не пытаются его "ломать" - нет резона выбрасывать собственное оружие при телепортации.
Любой кроме серверов от вольво. Там тп=антрастед банТак я не понял, серв любой могут положить? или с sv_cheats 1?
И раз так то и ММ офф сервер можно положить?