Error 100 function prototypes do not match

Issue with compiling ( error 100: function prototypes do not match) Scripting
Author

Message

Junior Member

Old

10-09-2014

, 09:15

 

Issue with compiling ( error 100: function prototypes do not match)

Reply With Quote

#1


This is my script:

#include <sourcemod>
public OnPluginStart()
{
RegServerCmd(«sm_serverinfo», Command_ServerInfo, «View server information.»);
}
public Action:Command_ServerInfo(client, args)
{
PrintToChat(client, «ServerInfo»);
return Plugin_Handled
}

When I compile it says Error 100: Function prototypes do not match.
Any help? Thanks!

DrToadley is offline

Veteran Member

Impact123's Avatar

Join Date: Oct 2011

Location: Germany

Impact123 is offline

Junior Member

Old

10-09-2014

, 09:33

 

Re: Issue with compiling ( error 100: function prototypes do not match)

Reply With Quote

#3


Ok so I changed the script now, but now it says argument type mismatch: argument 1

this is the new script:
#include <sourcemod>
public OnPluginStart()
{
RegServerCmd(«sm_serverinfo», Command_ServerInfo, «View server information.»);
}
public Action:Command_ServerInfo(args)
{
PrintToChat(«ServerInfo»);
return Plugin_Handled
}

DrToadley is offline

Veteran Member

KissLick's Avatar

Join Date: Nov 2012

Location: void

KissLick is offline

Junior Member

Old

10-09-2014

, 09:52

 

Re: Issue with compiling ( error 100: function prototypes do not match)

Reply With Quote

#5


ok so now this compiled, I just gotta see if it works

DrToadley is offline

Junior Member

Old

10-09-2014

, 09:59

 

Re: Issue with compiling ( error 100: function prototypes do not match)

Reply With Quote

#6


I think I got it now, I had to put in PrintToChat(args, «ServerInfo»);


Last edited by DrToadley; 10-09-2014 at 10:01.

Reason: May have fixed the issue. Bread breaks everything; Dont ask.

DrToadley is offline

Junior Member

Old

10-09-2014

, 10:02

 

Re: Issue with compiling ( error 100: function prototypes do not match)

Reply With Quote

#7


Nope, still issues. says: sm_serverinfo unknown command.


Last edited by DrToadley; 10-09-2014 at 10:04.

DrToadley is offline

Veteran Member

KissLick's Avatar

Join Date: Nov 2012

Location: void

Old

10-09-2014

, 10:13

 

Re: Issue with compiling ( error 100: function prototypes do not match)

Reply With Quote

#8


Please use

for inserting a source code.

RegConsoleCmd — everyone can use this command (non-admin, admin, server)
RegAdminCmd — only admins can use this command (admin with required flag, server)
RegServerCmd — only server and admins via sm_rcon can use this command

PrintToChat — prints to chat of all players
PrintToChatAll — prints to chat of one specific player
PrintToConsole — prints to console (in game ~) of one specific player
PrintToServer — prints to server console only

docs. for these function -> https://sm.alliedmods.net/api/index.php

So, choose your functions ;-)

KissLick is offline

Junior Member

Old

10-09-2014

, 10:51

 

Re: Issue with compiling ( error 100: function prototypes do not match)

Reply With Quote

#9


Ok so it’s back to function prototype error. If someone can please post the entire proper code that’d be great. This is my code, perhaps one of you could experiment with it and try compiling it, I honestly don’t know why it’s not doing RegConsoleCmd but here’s the code.

PHP Code:



#include <sourcemod>
public OnPluginStart()
{
RegConsoleCmd("sm_serverinfo"Command_ServerInfo"View server information.");
}
 public 
Action:Command_ServerInfo(args)
{
PrintToChatAll("ServerInfo");  
return 
Plugin_Handled





DrToadley is offline

Veteran Member

KissLick's Avatar

Join Date: Nov 2012

Location: void

Old

10-09-2014

, 11:09

 

Re: Issue with compiling ( error 100: function prototypes do not match)

Reply With Quote

#10


You used RegConsoleCmd, so look at function definition:

PHP Code:



native RegConsoleCmd(const String:cmd[], ConCmd:callback, const String:description[]=""flags=0); 




PHP Code:



/**
 * Called when a generic console command is invoked.
 *
 * @param client        Index of the client, or 0 from the server.
 * @param args            Number of arguments that were in the argument string.
 * @return                An Action value.  Not handling the command
 *                        means that Source will report it as "not found."
 */
functag public Action:ConCmd(clientargs); 




So

PHP Code:



#include <sourcemod>public OnPluginStart()
{
    
RegConsoleCmd("sm_serverinfo"Command_ServerInfo"View server information.");
}

public 

Action:Command_ServerInfo(clientargs)
{
    
PrintToChatAll("ServerInfo");
    return 
Plugin_Handled





KissLick is offline

  • #1

Доброго времени суток.
Я занимался скриптингом на amxmodx и только сегодня перешол на sourcemod.
Написал достаточно простой плагин, но не уверен, что он работает, т.к. не во всех функциях sm разобрался.

И еще. Я не знаю как исправляется ошибка:
Error 100: function prototypes do not match

Warning’и прошу не брать в серьёз. Брал переменную ClientID для будущих нужд.

#include <sourcemod>
  
new GameValue
new UserID
new UserIDT
new ClientID
 
public Plugin:myinfo =
{
	name = "VErtoe MiniMode",
	author = "Primo",
	description = "Random modes",
	version = "1.0",
}
 
public OnPluginStart()
{
	HookEvent("round_start", VErtoe_Round_Start);
	HookEvent("player_spawned", VErtoe_PlayerSpawn);
	RegAdminCmd("ghost_on", Command_ghoston);
	RegConsoleCmd("ghost_off", Command_ghostoff);
}

public VErtoe_Round_Start(Handle:event, const String:name[], bool:dontBroadcast)
{
	UserID = GetEventInt(event, "userid")
	ClientID = GetClientOfUserId(UserID)
	//GameValue = GetRandomInt(0, 1);
	if(GameValue == 1)
	{
		PrintCenterTextAll("Активирован режим призраков")
	}
}

public VErtoe_Round_End(Handle:event, const String:name[], bool:dontBroadcast)
{
	return;
}

public GhostGame()
{
	SetEntityRenderMode(UserIDT, RenderMode:RENDER_TRANSCOLOR);  
	SetEntityRenderColor(UserIDT, 255, 255, 255, 0); 
}
public VErtoe_PlayerSpawn(Handle:event, const String:name[], bool:dontBroadcast)
{
	if(GameValue == 1)
	{
		if(GetClientTeam(UserID) == 2)
		{
			UserIDT = GetEventInt(event, "userid")
			GhostGame();
		}
	}
	return;
}

public Command_ghoston(client, args)
{
	GameValue = 1
	return;
}

public Command_ghostoff(client, args)
{
	GameValue = 0
	return;
}

P.S. Если есть ошибки, а они точно есть, то прошу писать без грубостей…

  • Команда форума
  • #2

Primo,

public VErtoe_Round_Start(Handle:event, const String:name[], bool:dontBroadcast) 
{ 
    UserID = GetEventInt(event, "userid") 
    ClientID = GetClientOfUserId(UserID) 
    //GameValue = GetRandomInt(0, 1); 
    if(GameValue == 1) 
    { 
        PrintCenterTextAll("Активирован режим призраков") 
    } 
}

Ты не можешь получить индекс клиента из хандла эвента старта раунда.

HookEvent("player_spawned", VErtoe_PlayerSpawn);

Нет такого эвента, есть player_spawn.

public VErtoe_Round_End(Handle:event, const String:name[], bool:dontBroadcast) 
{ 
    return; 
}

Это что вообще?

public GhostGame() 
{ 
    SetEntityRenderMode(UserIDT, RenderMode:RENDER_TRANSCOLOR);   
    SetEntityRenderColor(UserIDT, 255, 255, 255, 0);  
}

Ты не передал аргумента, чтобы присваивать ему цвет.

public Command_ghoston(client, args) 
{ 
    GameValue = 1 
    return; 
} 

public Command_ghostoff(client, args) 
{ 
    GameValue = 0 
    return; 
}

return Plugin_Handled; пиши. И еще это Action

 RegAdminCmd("ghost_on", Command_ghoston);

Нет 3-го аргумента — флага доступа.
Исправленый код:

#include <sourcemod> 
   
new GameValue 
  
public Plugin:myinfo = 
{ 
    name = "VErtoe MiniMode", 
    author = "Primo", 
    description = "Random modes", 
    version = "1.0", 
} 
  
public OnPluginStart() 
{ 
    HookEvent("round_start", VErtoe_Round_Start); 
    HookEvent("player_spawn", VErtoe_PlayerSpawn); 
    RegAdminCmd("ghost_on", Command_ghoston, ADMFLAG_BAN); 
    RegAdminCmd("ghost_off", Command_ghostoff, ADMFLAG_BAN); 
} 

public VErtoe_Round_Start(Handle:event, const String:name[], bool:dontBroadcast) 
{ 
	if(GameValue == 1) PrintCenterTextAll("Активирован режим призраков") 
} 

public GhostGame(client) 
{ 
    SetEntityRenderMode(client, RenderMode:RENDER_TRANSCOLOR);   
    SetEntityRenderColor(client, 255, 255, 255, 0);  
} 

public VErtoe_PlayerSpawn(Handle:event, const String:name[], bool:dontBroadcast) 
{ 
    if(GameValue == 1) 
    {
		new client = GetClientOfUserId(GetEventInt(event, "userid"))
        if(GetClientTeam(client) == 2) GhostGame(client); 
    } 
} 

public Action:Command_ghoston(client, args) 
{ 
    GameValue = 1 
    return Plugin_Handled; 
} 

public Action:Command_ghostoff(client, args) 
{ 
    GameValue = 0 
	return Plugin_Handled; 
}

KorDen

KorDen

Atra esterní ono thelduin!


  • #3

Primo, спаун игрока — player_spawn (а не player_spawned)

UserID = GetEventInt(event, «userid»)
ClientID = GetClientOfUserId(UserID)

Традиционно userid нигде не используется, поэтому сразу обычно делают client = GetClientOfUserId(GetEventInt(event, «userid»))
В RoundStart нет никакого userid, нужно в playerspawn это делать

SetEntityRenderMode, SetEntityRenderColor, GetClientTeam, и вообще почти все функции, использующие ID игрока — в них надо ClientId а не UserId передавать

function prototypes do not match — это на какую строчку ругается?

  • #4

Я использовал традиционную wiki по Sourcemod, там был эвент player_spawned, ну он так назывался…
Спасибо за уделённое время.

Добавлено через 5 часов 13 минут
Ошибки понял, разобрался.
Но не разобрался кое в чем. При данном коде должен, по идеи, при спавне террорист становится невидимым, если GameValue = 1, также писать в чат соответствующее сообщение, но это не работает.

#include <sourcemod> 
   
new GameValue 
  
public Plugin:myinfo = 
{ 
    name = "VErtoe MiniMode", 
    author = "Primo", 
    description = "Random modes", 
    version = "1.0", 
} 
  
public OnPluginStart() 
{ 
    HookEvent("round_start", VErtoe_Round_Start); 
    HookEvent("player_spawned", VErtoe_PlayerSpawn); 
    RegAdminCmd("ghost_on", Command_ghoston, ADMFLAG_BAN); 
    RegAdminCmd("ghost_off", Command_ghostoff, ADMFLAG_BAN); 
} 

public VErtoe_Round_Start(Handle:event, const String:name[], bool:dontBroadcast) 
{ 
    if(GameValue == 1) PrintCenterTextAll("Активирован режим призраков") 
} 

public VErtoe_PlayerSpawn(Handle:event, const String:name[], bool:dontBroadcast) 
{ 
    if(GameValue == 1) 
    {
		new client = GetClientOfUserId(GetEventInt(event, "userid"))
		if(GetClientTeam(client) == 2)
		{
			PrintToChatAll("Активирован режим призраков, террористы будут призраками");
			SetEntityRenderMode(client, RenderMode:RENDER_TRANSCOLOR);   
			SetEntityRenderColor(client, 255, 255, 255, 0);  
		}
    } 
} 

public Action:Command_ghoston(client, args) 
{ 
	PrintToChatAll("Активирован режим призраков");
	GameValue = 1 
	return Plugin_Handled; 
} 

public Action:Command_ghostoff(client, args) 
{ 
	PrintToChatAll("Деактивирован режим призраков");
	GameValue = 0 
	return Plugin_Handled; 
}

Последнее редактирование: 30 Янв 2014

  • Команда форума
  • #5

Это наоборот видимый

SetEntityRenderColor(client, 255, 255, 255, 0);

Вот

SetEntityRenderColor(client, 0, 0, 0, 0);

  • #6

Хорошо. Но а то, что

PrintToChatAll("Активирован режим призраков, террористы будут призраками");

должно писаться всегда, когда кто-то спавнится за террористов?

  • Команда форума
  • #7

    HookEvent("player_spawn", VErtoe_PlayerSpawn);

Говорили уже

  • #8

Я пишу для cs go, и, как говорит wiki, там player_spawned

Wiki

  • #9

Это наоборот видимый

SetEntityRenderColor(client, 255, 255, 255, 0);

Вот

SetEntityRenderColor(client, 0, 0, 0, 0);

Там прозрачность нулевая, т.ч. там всё равно, черная или белая будет модель.

Primo, там нету ничего что должно не работать, больше склоняюсь в евенту спавна. Замени на

HookEvent("player_spawn", VErtoe_PlayerSpawn);

и увидишь что все работает

  • #10

Там прозрачность нулевая, т.ч. там всё равно, черная или белая будет модель.

Primo, там нету ничего что должно не работать, больше склоняюсь в евенту спавна. Замени на

HookEvent("player_spawn", VErtoe_PlayerSpawn);

и увидишь что все работает

Тогда чем регулировать прозрачность, если прозрачным не становятся таким способом?

  • #11

это rgba (red green blue alfa) значение. alfa — прозрачность. Поставь 125 и увидишь полупрозрачного белого игрока.

  • #12

Это я всё знаю, но проблема в том, что прозрачность не устанавливается, или я что-то не так делаю…

  • #13

Это я всё знаю, но проблема в том, что прозрачность не устанавливается, или я что-то не так делаю…

Не работает в КС гоу прозрачность!

  • #14

Не работает в КС гоу прозрачность!

Сказали бы сразу…

Тогда другой вопрос.
Как я понял, функция, отвечающая за удаление оружия — RemovePlayerItem(client, item);?

Если это так, то 2 аргумент указывать слот игрока или определённое оружие weapon_*? Мне нужно, чтобы все оружия пропадали.

  • Команда форума
  • #15

KorDen

KorDen

Atra esterní ono thelduin!


  • #17

Какой функцией можно проверить на бота? Т.е. является ли игрок ботом или нет.

Нужно отсеять ботов от людей, а функции найти не могу. Под носом вертится только IsClientAuthorized

  • Команда форума
  • #18

  • #19

Попробую

Добавлено через 16 часов 54 минуты
Знает ли кто, как вызывать функцию ClientCommand(client, «r_screenoverlay *.vmt») безc sv_cheats 1?

Последнее редактирование: 1 Фев 2014

На чтение 3 мин. Просмотров 32 Опубликовано 15.12.2019

I have a program with 2 functions, one of them counts number of words in a file, and works perfectly, and the other one counts the number of tymes a specific word appears in file. This las function does work perfectly (i have tested it isolated from the main), but when i ordered everything in the main, with a functions.h file, i get this.

The function with the problem is word_cnt(FILE*, char*)

when i compile, i get this:

word.c:3:5: error: conflicting types for ‘word_cnt’ int word_cnt(FILE* fp, char* argv[2])

in the word.c file, (file which contains the word_cnt function with the problem) the function is defined like this

and in the header file, the prototype is like this:

I do not understand. the definition is correct, why does the compiler think i am redefyning it?

  • Pawn скриптинг
  • Первая помощь
  • Проблемы с компилированием
  • Правила форума
  • Просмотр новых публикаций

Содержание

  1. Обозначение ошибок и предупреждений Обновлено 18.08.2017
  2. Primo
  3. KorDen
  4. Primo

Обозначение ошибок и предупреждений Обновлено 18.08.2017

  • Группа: Администраторы
  • Сообщений: 6 900
  • Регистрация: 14 Август 11

Ошибки в консоли

%s — имя переменной/макроса/аргумента функции.

Авторы: OKStyle, webserfer, Kaza40k, [Nos]B[R]aiN[L], Ym[0]n, _volk_, ДениСыч, Roman1us, m1n1vv

Primo

IN UNITY

Доброго времени суток.
Я занимался скриптингом на amxmodx и только сегодня перешол на sourcemod.
Написал достаточно простой плагин, но не уверен, что он работает, т.к. не во всех функциях sm разобрался.

И еще. Я не знаю как исправляется ошибка:
Error 100: function prototypes do not match

Warning’и прошу не брать в серьёз. Брал переменную ClientID для будущих нужд.

всё тлен

Ты не можешь получить индекс клиента из хандла эвента старта раунда.

Нет такого эвента, есть player_spawn.

Ты не передал аргумента, чтобы присваивать ему цвет.

KorDen

Atra esterní ono thelduin!

Primo, спаун игрока — player_spawn (а не player_spawned)

User )
Client >
Традиционно user ))
В RoundStart нет никакого userid, нужно в playerspawn это делать

SetEntityRenderMode, SetEntityRenderColor, GetClientTeam, и вообще почти все функции, использующие ID игрока — в них надо ClientId а не UserId передавать

function prototypes do not match — это на какую строчку ругается?

Primo

IN UNITY

Я использовал традиционную wiki по Sourcemod, там был эвент player_spawned, ну он так назывался.
Спасибо за уделённое время.

Добавлено через 5 часов 13 минут
Ошибки понял, разобрался.
Но не разобрался кое в чем. При данном коде должен, по идеи, при спавне террорист становится невидимым, если GameValue = 1, также писать в чат соответствующее сообщение, но это не работает.

  • #1

C++:

public OnClientPutInServer(int client)
{
    CreateTimer(5.0, Cheat_check, _,TIMER_REPEAT);
}

public Action Cheat_check (Handle:timer, int client, int args)
{
    QueryClientConVar(client, "sv_cheats", GetClientVarCheats);
    QueryClientConVar(client, "r_drawothermodels", GetClientVarWalls);
    QueryClientConVar(client, "host_timescale", GetClientVarTime);
    QueryClientConVar(client, "mat_wireframe", GetClientVarWire);
    QueryClientConVar(client, "r_drawparticles", GetClientVarParticle);
}

The Line :
CreateTimer(5.0, Cheat_check, _,TIMER_REPEAT);

has error:
error 100: function prototypes do not match

@Vertigo Can you fix this??

Vertigo


  • #2

Remove int args from public Action Cheat_check (Handle:timer, int client, int args)

Vertigo


  • #3

But why are you checking these cvars ?
Client can never use them unless server itself has set sv_cheats to 1.

  • #4

But why are you checking these cvars ?
Client can never use them unless server itself has set sv_cheats to 1.

Engine.dll has some bugs which allows players to use cheat engine and use these commands for native wallhacks

Vertigo


  • #5

And what makes you think this will stop them.
If it was that easy to just query the cvars and kick/ban them, then there would be no cheaters.
The only way to stop it is to prevent the program on client side itself.
Which means they must install a program provided by you.

  • #6

And what makes you think this will stop them.
If it was that easy to just query the cvars and kick/ban them, then there would be no cheaters.
The only way to stop it is to prevent the program on client side itself.
Which means they must install a program provided by you.

I can make a program but it is not at all guaranteed that the player will install it.
By making a plugin, I can at least try that someone is not using hacks in my server.
I know there are many ways to inject dll in clientmod.( One of way, is through CFF explorer and adding xyz.dll in table of inputsystem.dll in bin folder of Clientmod)
I and you also know that cheaters are not going to stop.
That doesn’t mean that we will stop trying to stop them using hacks.
I am just trying my best from server-side.

Vertigo


  • #7

I understand what you are upto.
I am just pointing this is not the right way to deal with it.
Querying these cvars definitely not.
If you look at smac source code, it already does that whatever you are trying to do.

  • #8

I understand what you are upto.
I am just pointing this is not the right way to deal with it.
Querying these cvars definitely not.
If you look at smac source code, it already does that whatever you are trying to do.

I understand your point of view.
I will not make this plugin.

Vertigo


  • #9

Anyway you can try different options if you want.
Trying to code something new is always fun. :)

  • #10

Anyway you can try different options if you want.
Trying to code something new is always fun. :)

I am working on new plugin (pause for warmod)
By the way, coding is way more fun.;)

public PlVers:__version =
{
version = 5,
filevers = «1.6.0-dev+3871»,
date = «04/10/2013»,
time = «23:16:57»
};
new Float:NULL_VECTOR[3];
new String:NULL_STRING[4];
public Extension:__ext_core =
{
name = «Core»,
file = «core»,
autoload = 0,
required = 0,
};
new MaxClients;
public Extension:__ext_sdktools =
{
name = «SDKTools»,
file = «sdktools.ext»,
autoload = 1,
required = 1,
};
new votecount;
new bool:voteEnded;
new bool:timerCreated;
new bool:didclientVote[32];
new Handle:sm_rebootvote_type;
new Handle:sm_rebootvote_map;
new playeronline;
public Plugin:myinfo =
{
name = «Dota 2 — Server reboot voter.»,
description = «Server reboot/map reload voter.»,
author = «Playstation 3»,
version = «1.0»,
url = «»
};
public __ext_core_SetNTVOptional()
{
MarkNativeAsOptional(«GetFeatureStatus»);
MarkNativeAsOptional(«RequireFeature»);
MarkNativeAsOptional(«AddCommandListener»);
MarkNativeAsOptional(«RemoveCommandListener»);
MarkNativeAsOptional(«BfWriteBool»);
MarkNativeAsOptional(«BfWriteByte»);
MarkNativeAsOptional(«BfWriteChar»);
MarkNativeAsOptional(«BfWriteShort»);
MarkNativeAsOptional(«BfWriteWord»);
MarkNativeAsOptional(«BfWriteNum»);
MarkNativeAsOptional(«BfWriteFloat»);
MarkNativeAsOptional(«BfWriteString»);
MarkNativeAsOptional(«BfWriteEntity»);
MarkNativeAsOptional(«BfWriteAngle»);
MarkNativeAsOptional(«BfWriteCoord»);
MarkNativeAsOptional(«BfWriteVecCoord»);
MarkNativeAsOptional(«BfWriteVecNormal»);
MarkNativeAsOptional(«BfWriteAngles»);
MarkNativeAsOptional(«BfReadBool»);
MarkNativeAsOptional(«BfReadByte»);
MarkNativeAsOptional(«BfReadChar»);
MarkNativeAsOptional(«BfReadShort»);
MarkNativeAsOptional(«BfReadWord»);
MarkNativeAsOptional(«BfReadNum»);
MarkNativeAsOptional(«BfReadFloat»);
MarkNativeAsOptional(«BfReadString»);
MarkNativeAsOptional(«BfReadEntity»);
MarkNativeAsOptional(«BfReadAngle»);
MarkNativeAsOptional(«BfReadCoord»);
MarkNativeAsOptional(«BfReadVecCoord»);
MarkNativeAsOptional(«BfReadVecNormal»);
MarkNativeAsOptional(«BfReadAngles»);
MarkNativeAsOptional(«BfGetNumBytesLeft»);
MarkNativeAsOptional(«PbReadInt»);
MarkNativeAsOptional(«PbReadFloat»);
MarkNativeAsOptional(«PbReadBool»);
MarkNativeAsOptional(«PbReadString»);
MarkNativeAsOptional(«PbReadColor»);
MarkNativeAsOptional(«PbReadAngle»);
MarkNativeAsOptional(«PbReadVector»);
MarkNativeAsOptional(«PbReadVector2D»);
MarkNativeAsOptional(«PbGetRepeatedFieldCount»);
MarkNativeAsOptional(«PbReadRepeatedInt»);
MarkNativeAsOptional(«PbReadRepeatedFloat»);
MarkNativeAsOptional(«PbReadRepeatedBool»);
MarkNativeAsOptional(«PbReadRepeatedString»);
MarkNativeAsOptional(«PbReadRepeatedColor»);
MarkNativeAsOptional(«PbReadRepeatedAngle»);
MarkNativeAsOptional(«PbReadRepeatedVector»);
MarkNativeAsOptional(«PbReadRepeatedVector2D»);
MarkNativeAsOptional(«PbSetInt»);
MarkNativeAsOptional(«PbSetFloat»);
MarkNativeAsOptional(«PbSetBool»);
MarkNativeAsOptional(«PbSetString»);
MarkNativeAsOptional(«PbSetColor»);
MarkNativeAsOptional(«PbSetAngle»);
MarkNativeAsOptional(«PbSetVector»);
MarkNativeAsOptional(«PbSetVector2D»);
MarkNativeAsOptional(«PbAddInt»);
MarkNativeAsOptional(«PbAddFloat»);
MarkNativeAsOptional(«PbAddBool»);
MarkNativeAsOptional(«PbAddString»);
MarkNativeAsOptional(«PbAddColor»);
MarkNativeAsOptional(«PbAddAngle»);
MarkNativeAsOptional(«PbAddVector»);
MarkNativeAsOptional(«PbAddVector2D»);
MarkNativeAsOptional(«PbReadMessage»);
MarkNativeAsOptional(«PbReadRepeatedMessage»);
MarkNativeAsOptional(«PbAddMessage»);
VerifyCoreVersion();
return 0;
}

PrintToChatAll(String:format[])
{
decl String:buffer[192];
new i = 1;
while (i <= MaxClients)
{
if (IsClientInGame(i))
{
SetGlobalTransTarget(i);
VFormat(buffer, 192, format, 2);
PrintToChat(i, «%s», buffer);
i++;
}
i++;
}
return 0;
}

public OnPluginStart()
{
AddCommandListener(Command_Say, «say»);
AddCommandListener(Command_Say, «say_team»);
playeronline = 0;
sm_rebootvote_type = CreateConVar(«sm_rebootvote_type», «0», «Reboot the server = 0 || Change the map = 1», 0, false, 0, false, 0);
sm_rebootvote_map = CreateConVar(«sm_rebootvote_map», «riverofsouls», «The map you want to change into when the vote is passed.», 0, false, 0, false, 0);
return 0;
}

public OnClientPutInServer(client)
{
if (IsClientSourceTV(client))
{
return 0;
}
playeronline += 1;
return 0;
}

public OnClientDisconnect(client)
{
if (IsClientSourceTV(client))
{
return 0;
}
playeronline -= 1;
return 0;
}

public Action:Command_Say(client, String:command[], args)
{
decl String:sayString[32];
decl String:clientName[32];
new maxVotesr;
GetCmdArg(1, sayString, 32);
GetClientName(client, clientName, 32);
GetCmdArgString(sayString, 32);
StripQuotes(sayString);
if (!strcmp(sayString, «-vb», false))
{
if (IsClientSourceTV(client))
{
return Action:0;
}
if (GetClientTeam(client) != 2)
{
PrintToChat(client, «You have no right to vote.»);
return Action:0;
}
if (didclientVote[client][0][0])
{
PrintToChat(client, «You have already voted for a server reboot.»);
return Action:0;
}
votecount += 1;
if (playeronline <= 3)
{
maxVotesr = 1;
}
else
{
if (playeronline <= 5)
{
maxVotesr = 3;
}
if (playeronline <= 7)
{
maxVotesr = 5;
}
if (playeronline == 8)
{
maxVotesr = 6;
}
maxVotesr = 7;
}
PrintToChatAll(«%s have voted for a server reboot (%d / %d)», clientName, votecount, maxVotesr);
if (votecount < maxVotesr)
{
voteEnded = 0;
didclientVote[client] = 1;
if (!timerCreated)
{
timerCreated = 1;
CreateTimer(30, checkForVotes, any:0, 0);
}
}
if (votecount >= maxVotesr)
{
if (!voteEnded)
{
voteEnded = 1;
votecount = 0;
CreateTimer(1, ExitServer, any:0, 3);
}
}
}
return Action:0;
}

public Action:ExitServer(Handle:Timer, client)
{
static repeatNumber;
new voteType = GetConVarInt(sm_rebootvote_type);
new String:mapName[32];
GetConVarString(sm_rebootvote_map, mapName, 32);
if (repeatNumber >= 9)
{
repeatNumber = 0;
if (voteType)
{
ServerCommand(«map %s», mapName);
}
else
{
ServerCommand(«exit»);
}
reSetVotes();
return Action:4;
}
if (voteType)
{
PrintToChatAll(«Changing map to %s in %d», mapName, 9 — repeatNumber);
}
else
{
PrintToChatAll(«Server will reboot in %d», 9 — repeatNumber);
}
repeatNumber += 1;
return Action:0;
}

public Action:checkForVotes(Handle:Timer, client)
{
if (voteEnded)
{
return Action:0;
}
PrintToChatAll(«Vote failed, server will not reboot.»);
reSetVotes();
return Action:0;
}

public reSetVotes()
{
voteEnded = 0;
timerCreated = 0;
votecount = 0;
new i = 1;
while (i <= 32)
{
didclientVote = 0;
i++;
}
return 0;
}

Нажмите, чтобы раскрыть…

Binary validation failed: Method FindClassByName failed verification: Invalid instruction

Internal compilation error detected. Please file a bug:
https://github.com/alliedmodders/sourcepawn/issues/new

Metamod:Source Version Information

Metamod:Source version 1.11.0-dev+1145
Plugin interface version: 16:14
SourceHook version: 5:5
Loaded As: Valve Server Plugin
Compiled on: Jul 12 2021 05:28:44
Built from: https://github.com/alliedmodders/metamod-source/commit/0bb53f2
Build ID: 1145:0bb53f2

SourceMod Version Information:

SourceMod Version: 1.11.0.6800
SourcePawn Engine: 1.11.0.6800, jit-x86 (build 1.11.0.6800)
SourcePawn API: v1 = 5, v2 = 14
Compiled on: Oct 27 2021 19:46:13
Built from: https://github.com/alliedmodders/sourcemod/commit/10795fbe
Build ID: 6800:10795fbe

FindClassByName

stock bool FindClassByName (const char[] name, ServerClass out)
{
	ServerClass current; current = g_pServerClassHead;

	for (;;)
	{
		if ( strcmp(current.name, name, false) == 0 )
		{
			out = current;
			return true;
		}
		
		if ( !current.IsValidNext() )
			break;
		
		current = GetNextClass(current);
	}
	
}

Full code

#pragma semicolon 1
#pragma newdecls required

#include <sourcemod>
#include <sdktools>

#define SEND_PROP_SIZE 0x54
#define INTERFACEVERSION_SERVERGAMEDLL				"ServerGameDLL005"

enum SendPropType
{
	DPT_Int,
	DPT_Float,
	DPT_Vector,
	DPT_VectorXY, // Only encodes the XY of a vector, ignores Z
	DPT_String,
	DPT_Array,	// An array of the base types (can't be of datatables).
	DPT_DataTable,
	DPT_Int64,
	DPT_NUMSendPropTypes
};

enum EServerClass
{
	m_pNetworkName,
	m_pTable = 4,
	m_pNext = 8,
	m_ClassID = 12,
	m_InstanceBaselineIndex = 16
}

enum ESendTable
{
	m_pProps,
	m_nProps = 4,
	m_pNetTableName = 8
};

enum ESendProp
{
	m_Type = 8,
	m_pVarName = 48,
	m_ProxyFn = 64,
	m_pDataTable = 72
};

enum struct SendProp
{
	SendPropType type;
	Address sendtable;
	
	Address proxy;
	
	char name[64];
	
	bool filled;
	Address me;
	
	void Fill (Address prop)
	{
		if ( this.filled )
			return;
			
		GetString(LoadFromAddress(prop + view_as<Address>(m_pVarName), NumberType_Int32), this.name, sizeof SendProp::name);
		
		this.type = view_as<SendPropType>(LoadFromAddress(prop + view_as<Address>(m_Type), NumberType_Int32));
		this.sendtable = LoadFromAddress(prop + view_as<Address>(m_pDataTable), NumberType_Int32);
		this.proxy = prop + view_as<Address>(m_ProxyFn);
		this.me = prop;
	}
}

enum struct SendTable
{
	Address	props;
	int		numprops;
	char		name[64];
	
	bool filled;
	Address me;
	
	void Fill (Address table)
	{
		if ( this.filled )
			return;
			
		GetString(LoadFromAddress(table + view_as<Address>(m_pNetTableName), NumberType_Int32), this.name, sizeof SendTable::name);
		
		this.props = table + view_as<Address>(m_pProps);
		this.numprops = LoadFromAddress(table + view_as<Address>(m_nProps), NumberType_Int32);
		this.me = table;
	}
}

enum struct ServerClass
{
	char name[64];
	SendTable table;
	Address next;
	int classid;
	int baseline;
	
	bool filled;
	Address me;
	
	void Fill (Address class)
	{
		if ( this.filled || !class )
			return;
		
		GetString(LoadFromAddress(class, NumberType_Int32), this.name, sizeof ServerClass::name);
		
		this.table.Fill(LoadFromAddress(class + view_as<Address>(m_pTable), NumberType_Int32));
		this.next = LoadFromAddress(class + view_as<Address>(m_pNext), NumberType_Int32);
		this.classid = LoadFromAddress(class + view_as<Address>(m_ClassID), NumberType_Int32);
		this.baseline = LoadFromAddress(class + view_as<Address>(m_InstanceBaselineIndex), NumberType_Int32);
		this.me = class;
		
		this.filled = true;
	}
	
	bool IsValidNext()
	{
		return this.me && LoadFromAddress(this.me + view_as<Address>(m_pNext), NumberType_Int32) != Address_Null;
	}
}

ServerClass g_pServerClassHead;

public int NAT_FindServerClass (Handle hPlugin, int numParams)
{
	char name[64]; ServerClass class;	
	GetNativeString(1, name, sizeof name);

	bool ret = FindClassByName(name, class);
	SetNativeArray(2, class, sizeof ServerClass);
	return ret;
}

public int NAT_FindSendProp (Handle hPlugin, int numParams)
{
	char netclass[64], prop_name[64]; 
		
	GetNativeString(1, netclass, sizeof netclass);
	GetNativeString(2, prop_name, sizeof prop_name);
	
	SendProp prop;
	bool ret = FindSendProp (netclass, prop_name, prop);
	SetNativeArray(3, prop, sizeof SendProp);
	return ret;
}

public APLRes AskPluginLoad2(Handle myself, bool late, char[] error, int err_max)
{
	CreateNative("Proxy_FindServerClass", NAT_FindServerClass); 
	CreateNative("Proxy_FindSendProp", NAT_FindSendProp); 
	return APLRes_Success;
}

public void OnPluginStart()
{
	Handle call;
	
	StartPrepSDKCall(SDKCall_Static);
	PrepSDKCall_SetSignature(SDKLibrary_Server, "@CreateInterface", 0);
	PrepSDKCall_AddParameter(SDKType_String, SDKPass_Pointer);
	PrepSDKCall_AddParameter(SDKType_PlainOldData, SDKPass_Pointer, VDECODE_FLAG_ALLOWNULL);
	PrepSDKCall_SetReturnInfo(SDKType_PlainOldData, SDKPass_Plain);
	call = EndPrepSDKCall();
	
	g_pServerClassHead.Fill(GetServerClassHead(call));

	delete call;
}

Address GetServerClassHead(Handle call)
{		
	Address ptr = SDKCall(call, INTERFACEVERSION_SERVERGAMEDLL, 0);
	
	StartPrepSDKCall(SDKCall_Raw);
	PrepSDKCall_SetVirtual(10);
	PrepSDKCall_SetReturnInfo(SDKType_PlainOldData, SDKPass_Plain);
	Handle get = EndPrepSDKCall();
	
	ptr = SDKCall(get, ptr);	
	
	delete get;
	return ptr;
}

stock any[] GetSendProp (SendTable table, int prop)
{
	SendProp sendprop; sendprop.Fill(LoadFromAddress(table.props, NumberType_Int32) + prop * SEND_PROP_SIZE);
	return sendprop;
}

stock bool FindSendProp (const char[] netclass, const char[] propname, SendProp out)
{
	ServerClass class;
	
	if ( !FindClassByName(netclass, class) )
		return false;
	
	return FindSendPropTable(class.table, propname, out);
}

stock bool FindSendPropTable (SendTable table, const char[] propname, SendProp out)
{
	SendProp prop; SendTable sendtable;
	
	for (int i; i < table.numprops; i++)
	{
		prop = GetSendProp(table, i);

		if ( strcmp(prop.name, propname, false) == 0 )
		{
			out = prop;
			return true;
		}
		
		if ( prop.sendtable )
		{
			sendtable.Fill(prop.sendtable);
			if ( FindSendPropTable(sendtable, propname, out) )
				return true;
		}
	}
	
	return false;
}

stock bool FindClassByName (const char[] name, ServerClass out)
{
	ServerClass current; current = g_pServerClassHead;

	for (;;)
	{
		if ( strcmp(current.name, name, false) == 0 )
		{
			out = current;
			return true;
		}
		
		if ( !current.IsValidNext() )
			break;
		
		current = GetNextClass(current);
	}
	
}

stock any[] GetNextClass (ServerClass class)
{	
	ServerClass nextclass; 
	if ( class.me )
		nextclass.Fill(view_as<Address>(LoadFromAddress(class.me + view_as<Address>(m_pNext), NumberType_Int32)));
	return nextclass;
}

stock void GetString (Address ptr, char[] buffer, int len)
{
	int byte, counter;
	
	while ((byte = LoadFromAddress(ptr + view_as<Address>(counter), NumberType_Int8)) != '' && counter <= len - 1)
	{
		buffer[counter] = view_as<char>(byte);
		counter++;
	}
}

#include <sourcemod>
#include <sdktools>
#include <cstrike>
#include <clientprefs>
#include <sdkhooks>

#pragma semicolon 1
#pragma newdecls required

#define nullstr        NULL_STRING

public Plugin myinfo =

    name    = «sklepsms»,
    author    = «fejmek»,
    version    = «1.0»,
    url        = «»
};

public void OnPluginStart()
{
    RegConsoleCmd(«sm_sklepsms», command_sklep);
}

public void command_sklep (int client)
{
    Menu menu = new Menu(Menu_Handler);
    menu.SetTitle(«SKLEP SMSn n»);
    menu.AddItem(nullstr, «Ceny VIPa»);
    menu.AddItem(nullstr, «Zakup VIPa»);
    menu.AddItem(nullstr, «Aktywacja VIPa»);
    menu.AddItem(nullstr, «Korzyści VIPa»);
    menu.Display(client, 60);
}

public int Menu_Handler(Menu menu, MenuAction action, int client, int a)
{
    switch(action)
    {
        case MenuAction_Select:
        {
            switch(a)
            {
                case 0: DrawPanel(client, «1,23zł — 1 dzień n4,92zł — 1 tydzień  n8,61 zł — 2 tygodnie n9,84zł — 3 tygodnie n12,30zł — 1 miesiąc n23,37zł — 2 miesiące n24,60zł — 3 miesiące n30,75zł — 4 miesiące»);

case 1: DrawPanel(client, «Wyślij sms o treści ‘SHOT’ na numer: (zapisz kod który otrzymasz) n7136  —  1,23zł n7455  —  4,92zł n77464  —  8,61zł n78464  —  9,84zł n91055  —  12.30zł n91955  —  23,37zł n92055  —  24,60zł    92555  —  30,75zł «);

                
                case 2: DrawPanel(client, «Musisz skontaktować sie z Fejmkiem !fejmek i wysłać mu kod otrzymany sms»);

                case 3: FakeClientCommandEx(client, «sm_funkcjevipa»);
            }
        }
        case MenuAction_End:
            delete menu;
    }
    return 0;
}

public void DrawPanel(int client, const char[] buffer)
{
    Panel panel = new Panel();
    panel.SetTitle(«Sklepsms»);
    panel.DrawText(«—————————————«);
    panel.DrawText(buffer);
    panel.DrawText(«—————————————«);
    panel.DrawItem(«Wróć»);
    panel.DrawItem(«Wyjdź»);
    panel.Send(client, PanelHandler, 30);
    delete panel;
}

public int PanelHandler(Menu menu, MenuAction action, int client, int item)
{
    switch(action)
    {
        case MenuAction_Select:
        {
            switch(item)
            {
                case 1: command_sklep(client);
                case 2: delete menu;
            }
        }
    }
}

error 001 expected token: «%s», but found «%s» ожидался символ: «%s», но был найден «%s» error 002 only a single statement (or expression) can follow each «case» только одно заявление (или выражение) могут следовать за «case» error 003 declaration of a local variable must appear in a compound block объявленная локальная переменная должна использоваться в этом же блоке error 004 function «%s» is not implemented функция %s не реализована error 005 function may not have arguments функция не имеет аргументов error 006 must be assigned to an array должен быть присвоен массив error 007 operator cannot be redefined оператор не может быть установлен еще раз error 008 must be a constant expression; assumed zero должно быть постоянным выражением; равным нулю error 009 invalid array size (negative or zero) неверный размер массива (отрицательный или 0) error 010 invalid function or declaration неизвестная функция или декларация error 011 invalid outside functions неверно вне функции error 012 invalid function call, not a valid address неверный вызов функции, неверный адрес error 013 no entry point (no public functions) нет точки входа (не public функция) error 014 invalid statement; not in switch неверный оператор; не в switch error 015 default case must be the last case in switch statement default должен быть последним условием в switch error 016 multiple defaults in «switch» несколько «default» в switch error 017 undefined symbol «%s» неизвестный символ «%s» error 018 initialization data exceeds declared size данные массива превышают его размер error 019 not a label: «%s» не метка «%s» error 020 invalid symbol name «%s» неверное имя символа «%s» error 021 symbol already defined: «%s» символ уже объявлен: «%s» error 022 must be lvalue (non-constant) должно быть левосторонним (нет постоянной) error 023 array assignment must be simple assignment назначение массива должно быть простым error 024 break or «continue» is out of context break или «continue» вне контекста error 025 function heading differs from prototype функция заголовка отличается от прототипа error 026 no matching «#if…» не найдено «#if…» error 027 invalid character constant недопустимый символ в постоянной error 028 invalid subscript (not an array or too many subscripts): «%s» неверный индекс (это не массив или слишком много индексов): «%s» error 029 invalid expression, assumed zero неверное выражение, нет результата error 030 compound statement not closed at the end of file составной оператор не закрыт в конце файла error 031 unknown directive неизвестная директива error 032 array index out of bounds (variable «%s») индекс массива превышен error 033 array must be indexed (variable «%s») массив должен быть проиндексирован error 034 argument does not have a default value (argument %d) аргумент не имеет начального значения (аргумент %d) error 035 argument type mismatch (argument %d) несоответствие типа аргумента (аргумент %d) error 036 empty statement пустой оператор error 037 invalid string (possibly non-terminated string) неправильная строка error 038 extra characters on line лишние символы в строке error 039 constant symbol has no size символьная константа не имеет размера error 040 duplicate «case» label (value %d) несколько раз объявлен «case» с одним тем же параметром error 041 invalid ellipsis, array size is not known размер массива неизвестен error 042 invalid combination of class specifiers недопустимое сочетание класса error 043 character constant exceeds range for packed string символьная константа превышает размер строки error 044 positional parameters must precede all named parameters позиционные параметры должны предшествовать всем именованным параметрам error 045 too many function arguments слишком много аргументов у функции error 046 unknown array size (variable «%s») неизвестный размер массива error 047 array sizes do not match, or destination array is too small размеры массива конфликтуют, либо целевой массив слишком маленький error 048 array dimensions do not match размеры массива не совпадают error 049 invalid line continuation неправильное продолжение строки error 050 invalid range неверный диапазон error 051 invalid subscript, use «[ ]» operators on major dimensions неправильный индекс, используйте «[]» error 052 multi-dimensional arrays must be fully initialized много-размерные массивы должны быть полностью определены error 053 exceeding maximum number of dimensions превышение максимального числа измерений error 054 unmatched closing brace не найдена закрывающаяся скобка error 055 start of function body without function header начало функции без заголовка error 056 arrays, local variables and function arguments cannot be public (variable «%s») массивы, локальные переменные и аргументы функции не могут быть общедоступными (переменная «% s») error 057 unfinished expression before compiler directive который недействителен. error 058 duplicate argument; same argument is passed twice дублирование аргумента; аргумент передается несколько раз error 059 function argument may not have a default value (variable «%s») аргумент не может иметь значение по-умолчанию error 060 multiple «#else» directives between «#if … #endif» несколько «#else» между «#if и #endif» error 061 #elseif directive follows an «#else» directive #else перед «#elseif» error 062 number of operands does not fit the operator Количество операторов не соотвествует оператору error 063 function result tag of operator «%s» must be «%s» Результат функции %s должен быть %s error 064 cannot change predefined operators невозможно изменить уже определенные операторы error 065 function argument may only have a single tag (argument %d) в этой функции может быть только один аргумент error 066 function argument may not be a reference argument or an array (argument «%s») аргумент функции не может быть ссылкой или массивом error 067 variable cannot be both a reference and an array (variable «%s») Переменная не может быть как массив или ссылка error 068 invalid rational number precision in #pragma неверное число в #pragma error 069 rational number format already defined формат рационального числа уже определен error 070 rational number support was not enabled рациональное число не поддерживается error 071 user-defined operator must be declared before use (function «%s») объявленный оператор должен быть перед использованием error 072 sizeof operator is invalid on «function» symbols оператор «sizeof» не может быть использован для символов функции error 073 function argument must be an array (argument «%s») аргумент %s должен быть массивом error 074 #define pattern must start with an alphabetic character #define должен начинаться с буквы error 075 input line too long (after substitutions) введенная строка слишком длинная error 076 syntax error in the expression, or invalid function call неправильный синтаксис или неправильный вызов функции error 077 malformed UTF-8 encoding, or corrupted file: %s плохая кодировка UTF-8 или плохой файл: %s error 078 «»}»>function uses both «return» and «return <value>» «»}»>функция использует «return» и «return <значение>» error 079 inconsistent return types (array & non-array) несовместимость типов возвращенных результатов error 080 unknown symbol, or not a constant symbol (symbol «%s») неизвестный или непостоянный символ: %s error 081 cannot take a tag as a default value for an indexed array parameter (symbol «%s») Нельзя взять значение в массив %s error 082 user-defined operators and native functions may not have states созданные функции или операторы не имеют состояния error 083 a function may only belong to a single automaton (symbol «%s») функция может принадлежать только к одной автоматизации error 084 state conflict: one of the states is already assigned to another implementation (symbol «%s») для функции %s уже определенна данная state error 085 no states are defined for function «%s» нет состояний, определенных для функции «%s» error 086 unknown automaton «%s» неизвестная автоматизация «%s» error 087 unknown state «%s» for automaton «%s» неизвестное состояние «%s» в автоматизации «%s» error 088 number of arguments does not match definitionn количество аргументов не совпадает с объявленными в функции

Понравилась статья? Поделить с друзьями:
  • Error 100 disk
  • Error 100 connection closed a connection was closed corresponding to a tcp fin
  • Error 10 триколор тв что означает
  • Error 10 на весах что это
  • Error 10 xiaomi robot vacuum cleaner