@Tony, ну что сказать сразу видно ошибку не проверил на то что игрок жив вот и сыпитL 03/20/2017 - 15:29:54: [SM] Exception reported: Client 4 must be alive.
public Action:OnShouldBotAttackPlayer(bot, player, &bool:result)
{
if(!bot || !IsClientInGame(bot) || !IsPlayerAlive(bot) || !player || !IsClientInGame(player) || !IsPlayerAlive(player))
{
return Plugin_Continue;
}
.....
В этой теме можете оставлять свои заявки по написанию различных плагинов:
P.S. Некоторые плагины могу пропустить
P.S.S. Буду рад, если кто-то из скриптеров сюда будет заглядывать
Напишешь такой плагин перехода по серверам?
![]()
![]()
Я же сказал я просто убрал коменты с этих строчек, я скинул вам плагин и написал на каких строчках я изменил, зачем писать подобную ерунду? Если трудно открыть исход, держи.@Parker, я имел в виду сюда процитировал кусок кода, который с изменениями.
Телепаты в отпуске и не могут подсказать что вы там изменили.
С твоей пунктуацией не поймешь вообще о чём ты хочешь сказать.Решил изменить его чучуть под себя, убрал коменты где при написании rank в чате выводится статистика.
@Parker, где тут про то, что убраны только символы комментария?С твоей пунктуацией не поймешь вообще о чём ты хочешь сказать.
Как я сейчас смог понять (после цитирования кода, притом без необходимых тегов форматирования), ты разкомментировал блок в файле ..\army\eventsOnPluginStart.sp
Это так?
И какие же ты внёс изменения?
Твоя цитата не отличается от кода оригинала ничем, кроме отсутствия символов комментирования
И вообще: не лучше было бы поинтересоваться у самого автора плагина в той самой теме?
Где же я писал что изменял как то код?
--- Добавлено позже ---На стандарте там показывает игрокам всегда единицу, на скрине у меня 45 потому что мы пытались его поправить но не получилось.
Ты писал ему в личку или в тему плагина?автор меня игнорирует.
Я скинул суда версию где просто сняты коменты, мой знакомый пытался поправить но не чего не вышло. Я писал ему в личку он читает сообщения но не отвечает, не думаю что если я напишу в тему что-то изменится.--- Добавлено позже ---
Ты писал ему в личку или в тему плагина?
#include <sourcemod>
#include <sdkhooks>
#include <smlib>
#define WEAPONNAMESIZE 33
new const String:PLUGIN_NAME[]= "botswat"
new const String: PLUGIN_AUTHOR[]= "Bittersweet"
new const String:PLUGIN_DESCRIPTION[]= "Allows humans to bash teammate BOTs out of their way with their knife. This is an alternative to 'noblock' type plugins."
new const String: PLUGIN_VERSION[]= "2013.06.15.22.21"
new hooked_clients[MAXPLAYERS]
public Plugin:myinfo =
{
name = PLUGIN_NAME,
author = PLUGIN_AUTHOR,
description = PLUGIN_DESCRIPTION,
version = PLUGIN_VERSION,
url = "http://www.sourcemod.net/"
}
public OnPluginStart()
{
PrintToServer("[%s %s] - Loaded", PLUGIN_NAME, PLUGIN_VERSION)
}
public OnClientPutInServer(client)
{
if (IsClientConnected(client) && IsFakeClient(client))
{
SDKHook(client, SDKHook_OnTakeDamage, OnTakeDamage);
hooked_clients[client] = true
}
}
public OnClientDisconnect(client)
{
if (hooked_clients[client])
{
SDKUnhook(client, SDKHook_OnTakeDamage, OnTakeDamage);
hooked_clients[client] = false
}
}
public Action:OnTakeDamage(victim, &attacker, &inflictor, &Float:damage, &damagetype, &weapon, Float:damageForce[3], Float:damagePosition[3], damagecustom)
{
if (victim > MaxClients || attacker > MaxClients) return
if (!victim || !IsClientConnected(victim) || !IsFakeClient(victim) || !attacker || !IsClientConnected(attacker) || IsFakeClient(attacker) || GetClientTeam(attacker) != GetClientTeam(victim)) return
new String:bbm_weapon_name[WEAPONNAMESIZE]
GetClientWeapon(attacker, bbm_weapon_name, sizeof(bbm_weapon_name))
if (!StrEqual(bbm_weapon_name, "weapon_knife")) return
decl Float:clientposition[3], Float:targetposition[3], Float:vector[3], Float:bashposition[3]
GetClientEyePosition(attacker, clientposition)
GetClientEyePosition(victim, targetposition)
bashposition[0] = targetposition[0]
bashposition[1] = targetposition[1]
bashposition[2] = targetposition[2] + 50.0
MakeVectorFromPoints(targetposition, bashposition, vector)
NormalizeVector(vector, vector)
//600 will work, less than that won't do anything
new Float:fKnockBackToMake = 400.0
ScaleVector(vector, fKnockBackToMake)
TeleportEntity(victim, NULL_VECTOR, NULL_VECTOR, vector)
}
//End of code
//* This plugins is a remake of an Eventscripts plugin //*
//* called CTrun (http://addons.eventscripts.com/addons/view/CTRun) //*
#include <sourcemod>
#include <sdktools>
#include <cstrike>
#include <sdkhooks>
public Plugin:myinfo =
{
name = "CT-C4",
author = "rodipm",
description = "Allows Менты to pickup the c4 and plant it.",
version = "1.0",
url = "sourcemod.net"
}
new Handle:g_canplant = INVALID_HANDLE;
new bool:wait;
new bool:holding[MAXPLAYERS+1];
public OnPluginStart()
{
g_canplant = CreateConVar("ctc4_canplant", "0", "Defines if Менты can plant the bomb. Default = 0");
HookEvent("bomb_dropped", Dropped);
HookEvent("bomb_pickup", Pickup);
HookEvent("bomb_planted", Planted);
HookEvent("bomb_beginplant", Planting);
HookEvent("round_start", RoundStart);
HookEvent("round_end", RoundEnd);
//for(new i = 1; i <= MaxClients; i++)
//{
// if(IsClientInGame(i) && IsClientConnected(i))
// OnClientPutInServer(i);
//}
}
public OnClientPutInServer(client)
{
SDKHook(client, SDKHook_Touch, Touch);
}
public Touch(ent1, ent2)
{
if(!wait && !holding[ent1])
{
if(ent1 > 0 && ent1 <= MaxClients && IsPlayerAlive(ent1) && GetClientTeam(ent1) == CS_TEAM_CT)
{
decl String:name[50];
GetEdictClassname(ent2, name, 50);
if(StrContains(name, "weapon_c4") != -1)
{
SetEntProp(ent1, Prop_Send, "m_iTeamNum", 2);
RemoveEdict(ent2);
GivePlayerItem(ent1, "weapon_c4");
SetEntProp(ent1, Prop_Send, "m_iTeamNum", 3);
holding[ent1] = true;
}
}
}
}
public Dropped(Handle:event, const String:name[], bool:dontBroadcast)
{
new client = GetClientOfUserId(GetEventInt(event, "userid"));
if(IsClientConnected(client) && IsClientInGame(client) && GetClientTeam(client) == CS_TEAM_CT)
{
wait = true;
CreateTimer(0.5, WaitCheck);
holding[client] = false;
}
}
public Pickup(Handle:event, const String:name[], bool:dontBroadcast)
{
new client = GetClientOfUserId(GetEventInt(event, "userid"));
if(GetClientTeam(client) == CS_TEAM_CT)
holding[client] = true;
}
public Planted(Handle:event, const String:name[], bool:dontBroadcast)
{
new client = GetClientOfUserId(GetEventInt(event, "userid"));
if(GetClientTeam(client) == CS_TEAM_CT)
holding[client] = false;
}
public Planting(Handle:event, const String:name[], bool:dontBroadcast)
{
new client = GetClientOfUserId(GetEventInt(event, "userid"));
if(GetClientTeam(client) == CS_TEAM_CT && !GetConVarBool(g_canplant))
{
PrintToChatAll("\x04[CT-C4 \x04]\x03 Вы не можете ставить бомбу!");
new weapon = GetEntPropEnt(client, Prop_Data, "m_hActiveWeapon");
RemovePlayerItem(client, weapon);
SetEntProp(client, Prop_Send, "m_iTeamNum", 2);
GivePlayerItem(client, "weapon_c4");
SetEntProp(client, Prop_Send, "m_iTeamNum", 3);
holding[client] = true;
}
}
public RoundStart(Handle:event, const String:name[], bool:dontBroadcast)
{
if(!GetConVarBool(g_canplant))
PrintToChatAll("\x04[CT-C4 \x04]\x03 Менты Вы можете брать бомбу");
else
PrintToChatAll("\x04[CT-C4 \x04]\x03 Менты Вы можете брать и ставить бомбу!");
}
public RoundEnd(Handle:event, const String:name[], bool:dontBroadcast)
{
for(new i = 1; i <= MaxClients; i++)
{
if(IsClientInGame(i) && GetClientTeam(i) == CS_TEAM_CT)
holding[i] = false;
}
}
public Action:WaitCheck(Handle:timer)
{
wait = false;
}