Помощь с плагином

WinsomeQuill

Участник
Сообщения
15
Реакции
1
Операционная система
Linux
Текст ошибки
More Errors
Список мета-модулей
[01] SourceMod (1.10.0.6224) by AlliedModders LLC
[02] CS Tools (1.10.0.6224) by AlliedModders LLC
[03] SDK Tools (1.10.0.6224) by AlliedModders LLC
[04] SDK Hooks (1.10.0.6224) by AlliedModders LLC
Список плагинов SM
01 "Anti-Flood" (1.10.0.6224) by AlliedModders LLC
02 "Advanced admin commands" (0.16) by 3sigma
03 "Basic Chat" (1.10.0.6224) by AlliedModders LLC
04 "Player Commands" (1.10.0.6224) by AlliedModders LLC
05 "Basic Info Triggers" (1.10.0.6224) by AlliedModders LLC
06 "Basic Comm Control" (1.10.0.6224) by AlliedModders LLC
07 "Fun Commands" (1.10.0.6224) by AlliedModders LLC
08 "Zombie:Reloaded" (3.1) by Greyscale | Richard Helgeby
09 "Nextmap" (1.10.0.6224) by AlliedModders LLC
10 "Reserved Slots" (1.10.0.6224) by AlliedModders LLC
11 "SwapTeam" (1.2.6) by Rogue - Originally by MistaGee
12 "Basic Commands" (1.10.0.6224) by AlliedModders LLC
13 "Sound Commands" (1.10.0.6224) by AlliedModders LLC
14 "Admin Help" (1.10.0.6224) by AlliedModders LLC
15 "Basic Votes" (1.10.0.6224) by AlliedModders LLC
16 "Admin File Reader" (1.10.0.6224) by AlliedModders LLC
17 "Admin Menu" (1.10.0.6224) by AlliedModders LLC
18 "Client Preferences" (1.10.0.6224) by AlliedModders LLC
19 "Fun Votes" (1.10.0.6224) by AlliedModders LLC
20 "Basic Ban Commands" (1.10.0.6224) by AlliedModders LLC
Список расширений SM
[SM] Displaying 11 extensions:
[01] Automatic Updater (1.10.0.6224): Updates SourceMod gamedata files
[02] Webternet (1.10.0.6224): Extension for interacting with URLs
[03] CS Tools (1.10.0.6224): CS extended functionality
[04] BinTools (1.10.0.6224): Low-level C/C++ Calling API
[05] SDK Tools (1.10.0.6224): Source SDK Tools
[06] Client Preferences (1.10.0.6224): Saves client preference settings
[07] SQLite (1.10.0.6224): SQLite Driver
[08] Top Menus (1.10.0.6224): Creates sorted nested menus
[09] GeoIP (1.10.0.6224): Geographical IP information
[10] SDK Hooks (1.10.0.6224): Source SDK Hooks
[11] Regex (1.10.0.6224): Provides regex natives for plugins
Сразу скажу что я знаю только базу С++, а с SP работаю первый раз, поэтому и прошу помощи у знающих SP.
И так, мне нужно так чтобы при создание entity, оно(entity) записала индекс игрока(который создал), а так же вывод индекса. Ну и когда игрок будет атаковать Entity, то сделать проверку типо "(client == owner_entity || GetClientTeam(h_attacker) != GetClientTeam(client))"
если True, то entity ломается, если False, то урон блокируется.

Пробовал получать через: SetEntPropEnt(ent, Prop_Data, "m_hOwnerEntity", client); и выводить client = GetEntPropEnt(Ent, Prop_Data, "m_hOwnerEntity"); , но выбивало ошибку. :ac:

Кто знает как это можно сделать?

Оригинал плагин *клик*
 

Вложения

  • props134.sp
    15.2 КБ · Просмотры: 4

WinsomeQuill

Участник
Сообщения
15
Реакции
1
При компиляции
C-подобный:
props134.sp(108) : warning 234: symbol "FCVAR_PLUGIN" is marked as deprecated: No logic using this flag ever existed in a released game. It only ever appe
ared in the first hl2sdk.

props134.sp(138) : error 017: undefined symbol "Event_OnPlayerSpawn"
props134.sp(139) : error 017: undefined symbol "Event_OnPlayerDeath"
props134.sp(140) : error 017: undefined symbol "Event_OnPlayerTeam"
props134.sp(141) : error 017: undefined symbol "Event_OnRoundStart"
props134.sp(142) : error 017: undefined symbol "Event_OnRoundEnd"
props134.sp(293) : warning 209: function "Menu_ZPropHandle" should return a value
props134.sp(297) : error 017: undefined symbol "ent"
props134.sp(308) : error 017: undefined symbol "AddInFrontOf"
props134.sp(323) : error 017: undefined symbol "client"
props134.sp(323) : error 017: undefined symbol "Ent"
props134.sp(333) : warning 217: loose indentation
props134.sp(338) : warning 217: loose indentation
props134.sp(338) : error 017: undefined symbol "AddInFrontOf"
props134.sp(338) : warning 215: expression has no effect
props134.sp(338) : error 001: expected token: ";", but found "]"
props134.sp(338) : error 029: invalid expression, assumed zero
props134.sp(338) : fatal error 190: too many error messages on one line

Compilation aborted.
13 Errors.
 

DeeperSpy

Гений, миллиардер, плейбой, филантроп, майнкрафтер
Сообщения
588
Реакции
362
При компиляции
C-подобный:
props134.sp(108) : warning 234: symbol "FCVAR_PLUGIN" is marked as deprecated: No logic using this flag ever existed in a released game. It only ever appe
ared in the first hl2sdk.

props134.sp(138) : error 017: undefined symbol "Event_OnPlayerSpawn"
props134.sp(139) : error 017: undefined symbol "Event_OnPlayerDeath"
props134.sp(140) : error 017: undefined symbol "Event_OnPlayerTeam"
props134.sp(141) : error 017: undefined symbol "Event_OnRoundStart"
props134.sp(142) : error 017: undefined symbol "Event_OnRoundEnd"
props134.sp(293) : warning 209: function "Menu_ZPropHandle" should return a value
props134.sp(297) : error 017: undefined symbol "ent"
props134.sp(308) : error 017: undefined symbol "AddInFrontOf"
props134.sp(323) : error 017: undefined symbol "client"
props134.sp(323) : error 017: undefined symbol "Ent"
props134.sp(333) : warning 217: loose indentation
props134.sp(338) : warning 217: loose indentation
props134.sp(338) : error 017: undefined symbol "AddInFrontOf"
props134.sp(338) : warning 215: expression has no effect
props134.sp(338) : error 001: expected token: ";", but found "]"
props134.sp(338) : error 029: invalid expression, assumed zero
props134.sp(338) : fatal error 190: too many error messages on one line

Compilation aborted.
13 Errors.
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,980
вот поправил что мог
понятия не имею на что вот эту хрень заменить
new h_attacker = GetClientOfUserId(GetEventInt(event, "attacker"));
т.к. не знаю откуда появилось событие в каллбэке меню
и вот эту GetClientTeam(client) чуть ниже (походу там нужен владелец энтити)

как я понимаю ты надёргал кусков кода не понимая как и что там работает
 

Вложения

  • props134.sp
    14.9 КБ · Просмотры: 3

WinsomeQuill

Участник
Сообщения
15
Реакции
1
вот поправил что мог
понятия не имею на что вот эту хрень заменить
new h_attacker = GetClientOfUserId(GetEventInt(event, "attacker"));
т.к. не знаю откуда появилось событие в каллбэке меню
и вот эту GetClientTeam(client) чуть ниже (походу там нужен владелец энтити)

как я понимаю ты надёргал кусков кода не понимая как и что там работает
Ну вообще да, надергал, но надеюсь мне это простительно :blush:
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,980
может и простительно, но работать не будет
 

suicide_xD

Участник
Сообщения
212
Реакции
14
Ребят всем привет. Есть ноублок, работает для всех игроков и для всех гранат. Можно ли еще сюда добавить заложников?
CS:S v34 / SM 1.11
#include <sourcemod>
#include <sdktools>
new g_offsCollisionGroup=-1;
public Plugin:myinfo =
{
name = "[KDLP] NoBlock",
author = "KorDen",
version = "1.0",
url = "http://dev.sky-play.ru"
}
public OnPluginStart()
{
g_offsCollisionGroup = FindSendPropInfo("CBaseEntity", "m_CollisionGroup");
if (g_offsCollisionGroup == -1)
SetFailState("[NoBlock] Failed to get offset");
HookEvent("player_spawn", OnSpawn, EventHookMode_Post);
}
public OnSpawn(Handle:event, const String:name[], bool:dontBroadcast)
SetEntData(GetClientOfUserId(GetEventInt(event, "userid")), g_offsCollisionGroup, 2, 4, true);

public OnEntityCreated(entity, const String:classname[])
if(StrContains(classname, "_projectile", false)!=-1)
SetEntData(entity, g_offsCollisionGroup, 2, 4, true);
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,980
@suicide_xD, не прячь код под спойлер, а заключай между тегами: [CODE]твой_код[/CODE]
Без этого код портится и становится нечитаемым.
Да и можно было просто исходник прикрепить или дать ссыль на то сообщение форума откуда он был взят.

Тебе нужно в if(StrContains(classname, "_projectile", false)!=-1) добавить проверку на класс заложников.
Вот так: if(StrContains(classname, "_projectile", false)!=-1 || !strcmp(classname, "hostage_entity"))
Сообщения автоматически склеены:

Хотя я бы ещё код оптимизировал: убрал использование функции StrContains() и заменил её на strlen и strcmp(), чтобы меньше лишних операций при проверке производилось.
Ну и на новом синтаксисе переписал.

Но мне теперь даже компилить не на чем.
 

suicide_xD

Участник
Сообщения
212
Реакции
14
прикреплю исходник)
@suicide_xD, не прячь код под спойлер, а заключай между тегами: [CODE]твой_код[/CODE]
Без этого код портится и становится нечитаемым.
Да и можно было просто исходник прикрепить или дать ссыль на то сообщение форума откуда он был взят.

Тебе нужно в if(StrContains(classname, "_projectile", false)!=-1) добавить проверку на класс заложников.
Вот так: if(StrContains(classname, "_projectile", false)!=-1 || !strcmp(classname, "hostage_entity"))
Сообщения автоматически склеены:

Хотя я бы ещё код оптимизировал: убрал использование функции StrContains() и заменил её на strlen и strcmp(), чтобы меньше лишних операций при проверке производилось.
Ну и на новом синтаксисе переписал.

Но мне теперь даже компилить не на чем.
 

Вложения

  • kdlp-noblock.sp
    779 байт · Просмотры: 3

suicide_xD

Участник
Сообщения
212
Реакции
14
да уже не нужно: я уже написал что изменить в коде нужно
C-подобный:
#include <sourcemod>
#include <sdktools>
new g_offsCollisionGroup=-1;
public Plugin:myinfo =  
{ 
   name = "[KDLP] NoBlock",
   author = "KorDen",
   version = "1.0",
   url = "http://dev.sky-play.ru"
} 
public OnPluginStart()
{
    g_offsCollisionGroup = FindSendPropInfo("CBaseEntity", "m_CollisionGroup");
    if (g_offsCollisionGroup == -1)
        SetFailState("[NoBlock] Failed to get offset");
    HookEvent("player_spawn", OnSpawn, EventHookMode_Post);
}
public OnSpawn(Handle:event, const String:name[], bool:dontBroadcast)
    SetEntData(GetClientOfUserId(GetEventInt(event, "userid")), g_offsCollisionGroup, 2, 4, true);
    
public OnEntityCreated(entity, const String:classname[])
    if(strcmp(classname, "_projectile", false)!=-1 || !strcmp(classname, "hostage_entity"))
        SetEntData(entity, g_offsCollisionGroup, 2, 4, true);
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,980
@suicide_xD, скомпиленый smx не работает?
А что пишется в логах?
 

Xummuk97

Programmer
Сообщения
309
Реакции
75
C-подобный:
#include <sourcemod>
#include <sdktools>
new g_offsCollisionGroup=-1;
public Plugin:myinfo =
{
   name = "[KDLP] NoBlock",
   author = "KorDen",
   version = "1.0",
   url = "http://dev.sky-play.ru"
}
public OnPluginStart()
{
    g_offsCollisionGroup = FindSendPropInfo("CBaseEntity", "m_CollisionGroup");
    if (g_offsCollisionGroup == -1)
        SetFailState("[NoBlock] Failed to get offset");
    HookEvent("player_spawn", OnSpawn, EventHookMode_Post);
}
public OnSpawn(Handle:event, const String:name[], bool:dontBroadcast)
    SetEntData(GetClientOfUserId(GetEventInt(event, "userid")), g_offsCollisionGroup, 2, 4, true);
  
public OnEntityCreated(entity, const String:classname[])
    if(strcmp(classname, "_projectile", false)!=-1 || !strcmp(classname, "hostage_entity"))
        SetEntData(entity, g_offsCollisionGroup, 2, 4, true);
Попробуй добавить #include <sdkhooks>. Т.к. форвард находится в этом инклуде и не подключается в sourcemod или sdktools и видимо без его подключения ты просто создал функцию OnEntityCreated, которая никак не вызывается.
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,980
@suicide_xD, глянул ешё раз код: ты там в проверке накосячил и ноклип должен выдаваться вообще всем энтити при спавне. Если конечно не забыть добавить инклюд sdkhooks

Вот поправил код:
C-подобный:
#include <sdkhooks>

int g_offsCollisionGroup;

public Plugin myinfo = 
{
    name = "NoBlock"
}

public void OnPluginStart()
{
    if ((g_offsCollisionGroup = FindSendPropInfo("CBaseEntity", "m_CollisionGroup")) < 1)
        SetFailState("[NoBlock] Failed to get offset");
        
    HookEvent("player_spawn", OnSpawn);
}

public void OnSpawn(Event event, const char[] name, bool dontBroadcast)
{
    SetEntData(GetClientOfUserId(GetEventInt(event, "userid")), g_offsCollisionGroup, 2, 4, true);
}
    
public void OnEntityCreated(entity, const char[] cls)
{
    static int size;
    if(((size = strlen(cls) - 11) > 1 && !strcmp(cls[size ], "_projectile")) || !strcmp(cls, "hostage_entity"))
        SetEntData(entity, g_offsCollisionGroup, 2, 4, true);
}
Проверить компилируется ли могу только на онлайн-компиляторах.
Сообщения автоматически склеены:

Был бы нормальный комп (с виндой и всем моим обычным софтом, который я для написания плагинов использовал), то я бы ещё чуток код поправил (оффсет нужно получать раньше срабатывания OnPluginStart()).
 

suicide_xD

Участник
Сообщения
212
Реакции
14
@suicide_xD, глянул ешё раз код: ты там в проверке накосячил и ноклип должен выдаваться вообще всем энтити при спавне. Если конечно не забыть добавить инклюд sdkhooks

Вот поправил код:
C-подобный:
#include <sdkhooks>

int g_offsCollisionGroup;

public Plugin myinfo =
{
    name = "NoBlock"
}

public void OnPluginStart()
{
    if ((g_offsCollisionGroup = FindSendPropInfo("CBaseEntity", "m_CollisionGroup")) < 1)
        SetFailState("[NoBlock] Failed to get offset");
       
    HookEvent("player_spawn", OnSpawn);
}

public void OnSpawn(Event event, const char[] name, bool dontBroadcast)
{
    SetEntData(GetClientOfUserId(GetEventInt(event, "userid")), g_offsCollisionGroup, 2, 4, true);
}
   
public void OnEntityCreated(entity, const char[] cls)
{
    static int size;
    if(((size = strlen(cls) - 11) > 1 && !strcmp(cls[size ], "_projectile")) || !strcmp(cls, "hostage_entity"))
        SetEntData(entity, g_offsCollisionGroup, 2, 4, true);
}
Проверить компилируется ли могу только на онлайн-компиляторах.
Сообщения автоматически склеены:

Был бы нормальный комп (с виндой и всем моим обычным софтом, который я для написания плагинов использовал), то я бы ещё чуток код поправил (оффсет нужно получать раньше срабатывания OnPluginStart()).
Нет, не работает! Ладно спасиб)
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,980
@suicide_xD, тогда нужно делать хук на старт раунда (лучше всего на round_freeze_end) и циклом через FindEntityByClassname изменить коллизию заложников.

А вообще я вроде помню, что много лет уже был плагин на АМ, который и заложникам коллизию менял.
 
Сверху Снизу