Как заблочить закупку?

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
заблочить месадж, о том что игрок покинул зону закупки
Может он здесь?
User Messages: Name Index Size
Geiger 0 1
Train 1 1
HudText 2 -1
SayText 3 -1
SayText2 4 -1
TextMsg 5 -1
HudMsg 6 -1
ResetHUD 7 1
GameTitle 8 0
ItemPickup 9 -1
ShowMenu 10 -1
Shake 11 13
Fade 12 10
VGUIMenu 13 -1
Rumble 14 3
CloseCaption 15 -1
SendAudio 16 -1
RawAudio 17 -1
VoiceMask 18 25
RequestState 19 0
BarTime 20 -1
Damage 21 -1
RadioText 22 -1
HintText 23 -1
KeyHintText 24 -1
ReloadEffect 25 2
PlayerAnimEvent 26 -1
AmmoDenied 27 2
UpdateRadar 28 -1
KillCam 29 -1
MarkAchievement 30 -1
CallVoteFailed 31 -1
VoteStart 32 -1
VotePass 33 -1
VoteFailed 34 2
VoteSetup 35 -1
SPHapWeapEvent 36 4
HapDmg 37 -1
HapPunch 38 -1
HapSetDrag 39 -1
HapSetConst 40 -1
HapMeleeContact 41 0
PlayerStatsUpdate_DEPRECATED 42 -1
AchievementEvent 43 -1
MatchEndConditions 44 -1
MatchStatsUpdate 45 -1
PlayerStatsUpdate 46 -1
при нажатии кнопки b выводить хотябы месагу в чат или консоль
if (strcmp(type, "buy", 8) == 0) return Plugin_Handled;
Перед return что мешает сделать сообщение?
 

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #22
AlmazON, да, нужно ловить текст в центре (насколько я помню) но хз где он здесь.
 

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
ловить текст в центре
HudMsg? Я тоже не помню, по центру - это не Hud? Либо Hint ещё, но это по-моему сбоку, как и меню.
if (strcmp(type, "buy", 8) == 0)
{
PrintToConsole("Press 'B'.");
return Plugin_Handled;
}
Только ещё один return в конце небось для компиляции.
 

AMD

Участник
Сообщения
180
Реакции
18
Ох ребят, столько информации, голова не варит, да ещё и сам по себе нубяк, я спать завтро буду пыхтеть разбираться во всём этом...
 

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #26
"Cstrike_NotInBuyZone"
Вот сообщение о том что игрок вне зоны.
 

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
PHP:
public OnPluginStart() 
{ 
    HookUserMessage(GetUserMessageId("VGUIMenu"), HookHUD, true); 
} 

public Action:HookHUD(UserMsg:msg_id, Handle:bf, const players[], playersNum, bool:reliable, bool:init)  
{ 
    /* Тут делаем нужные проверки и блочим вывод. */ 
    decl String:type[16]; 
    BfReadString(bf, type, sizeof(type)); 

    if (strcmp(type, "buy", 8) == 0)
	{
		PrintToConsole("Player press 'B' [Buy].");
		return Plugin_Handled;
	}
	return Plugin_Continue;
}
"Cstrike_NotInBuyZone"
Вот сообщение о том что игрок вне зоны.
И куда? Хукнуть HookUserMessage?
 

AMD

Участник
Сообщения
180
Реакции
18
PHP:
public OnPluginStart()
{   
        AddCommandListener(HudText, "Cstrike_NotInBuyZone");
}

public Action:HudText(client, const String:command[], args)
{
        return Plugin_Handled;
}

Теоретический работать должно?
 

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
я там еще с одним затупил
Я сам с ними не очень. А при компиляции всё выясняется...
В готовом примере с Консолью учёл уже.
Я скинул сообщение, а не команду
Скинь API, где взял - там должно быть применение. Думаю, сообразит.
 

AMD

Участник
Сообщения
180
Реакции
18
Вобщем не получаеться у меня заюзать:

PHP:
#include <sourcemod>
#include <usermessages>
#include <console>
#include <string>
#include <bitbuffer>

public OnPluginStart() 
{ 
    HookUserMessage(GetUserMessageId("VGUIMenu"), HookHUD, true); 
} 

public Action:HookHUD(UserMsg:msg_id, Handle:bf, const players[], playersNum, bool:reliable, bool:init)  
{ 
    /* “ут делаем нужные проверки и блочим вывод. */ 
    decl String:type[16]; 
    BfReadString(bf, type, sizeof(type)); 

    if (strcmp(type, "buy", 8) == 0)
    {
        PrintToConsole("Player press 'B' [Buy].");
        return Plugin_Handled;
    }
    return Plugin_Continue;
}

При компиляции ощибки и предупреждения((

Ну думаю ну ладно удалю бай зону тем кодом который мне дали, и думаю просто когда игрок будет пытаться вызвать закупку командой buymenu я буду ему вызывать PrintToConsole, но тоже не пашет, ну как бы не компилиться, выдаёт ошибку как и с первым кодом

PHP:
public OnPluginStart()
{      
	RegConsoleCmd("buymenu",CMD_buymenu)
}

public Action:CMD_buymenu(client,args)
{
	PrintToConsole("Player press 'B' [Buy].")
	return Plugin_Handled
}

ну я попробывал сделать так
PrintToConsole(0, "Player press 'B' [Buy].")
тоже не пашет, а вообще что я только там не пробывал, id, client, player за место 0, тоже не получаеться...


Ребята, как мне правильно вызвать меню, которое будет создано уже позже, может будет вызываться из другого плагина, а может и в этом будет написано, и как же всёже заблочить MSG... help...
 

AMD

Участник
Сообщения
180
Реакции
18
Это то ещё зачем?! Хоть бы ошибки скинул... А так самому пробовать компилить)

С ума с хожу вот и леплю что попало, ошибки сейчас будут...

Добавлено через 12 минут
Это первый вариант:
PHP:
#include <sourcemod>
#include <usermessages>
#include <console>
#include <string>
#include <bitbuffer>

public OnPluginStart() 
{ 
    HookUserMessage(GetUserMessageId("VGUIMenu"), HookHUD, true); 
} 

public Action:HookHUD(UserMsg:msg_id, Handle:bf, const players[], playersNum, bool:reliable, bool:init)  
{ 
    /* “ут делаем нужные проверки и блочим вывод. */ 
    decl String:type[16]; 
    BfReadString(bf, type, sizeof(type)); 

    if (strcmp(type, "buy", 8) == 0)
    {
        PrintToConsole("Player press 'B' [Buy].");
        return Plugin_Handled;
    }
    return Plugin_Continue;
}
//SourceMod Batch Compiler
// by the SourceMod Dev Team


//// block.sp
// D:\cs_go\csgo\addons\sourcemod\scripting\block.sp(18) : warning 213: tag mism
atch
// D:\cs_go\csgo\addons\sourcemod\scripting\block.sp(20) : error 035: argument t
ype mismatch (argument 1)
//
// 1 Error.
//
// Compilation Time: 0,62 sec
// ----------------------------------------

Press enter to exit ...

Это второй:
PHP:
#include <sourcemod>
#include <sdktools_entinput>

public OnPluginStart()
{      
	RegConsoleCmd("buymenu",CMD_buymenu)
}

public Action:CMD_buymenu(client,args)
{
	PrintToConsole("Player press 'B' [Buy].")
	return Plugin_Handled
}

public OnMapStart() 
{ 
    new iMaxEntities = GetMaxEntities(), String:eName[64]; 
    for (new i=MaxClients;i<iMaxEntities;i++) 
    { 
        if (IsValidEdict(i) && IsValidEntity(i) && GetEdictClassname(i, eName, sizeof(eName))) 
        { 
            if(StrContains(eName, "func_buyzone") != -1) 
            { 
                AcceptEntityInput(i, "Kill"); 
            } 
        } 
    } 
}
//SourceMod Batch Compiler
// by the SourceMod Dev Team


//// block_bay2.sp
// D:\cs_go\csgo\addons\sourcemod\scripting\block_bay2.sp(11) : error 035: argum
ent type mismatch (argument 1)
//
// 1 Error.
//
// Compilation Time: 0,2 sec
// ----------------------------------------

Press enter to exit ...
 
Последнее редактирование:

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
// D:\cs_go\csgo\addons\sourcemod\scripting\block_bay 2.sp(11) : error 035: argum
ent type mismatch (argument 1)
Это я засыпал уже... Замени на PrintToServer.
D:\cs_go\csgo\addons\sourcemod\scripting\block.sp( 18) : warning 213: tag mism
atch
Такого выражения нет. Ошибся R1KO, там 8 не нужна, а true, либо false.
PHP:
#include <sourcemod>

public OnPluginStart()  
{  
	HookUserMessage(GetUserMessageId("VGUIMenu"), HookHUD, true);  
}  

public Action:HookHUD(UserMsg:msg_id, Handle:bf, const players[], playersNum, bool:reliable, bool:init)   
{  
	/* “ут делаем нужные проверки и блочим вывод. */  
	decl String:type[8];  
	BfReadString(bf, type, sizeof(type));  

	if (strcmp(type, "buy", false) == 0) 
	{ 
		PrintToServer("Player press 'B' [Buy]."); 
		return Plugin_Handled; 
	} 
	return Plugin_Continue; 
}
 

AMD

Участник
Сообщения
180
Реакции
18
Это я засыпал уже... Замени на PrintToServer.

Такого выражения нет. Ошибся R1KO, там 8 не нужна, а true, либо false.
PHP:
#include <sourcemod>

public OnPluginStart()  
{  
	HookUserMessage(GetUserMessageId("VGUIMenu"), HookHUD, true);  
}  

public Action:HookHUD(UserMsg:msg_id, Handle:bf, const players[], playersNum, bool:reliable, bool:init)   
{  
	/* “ут делаем нужные проверки и блочим вывод. */  
	decl String:type[8];  
	BfReadString(bf, type, sizeof(type));  

	if (strcmp(type, "buy", false) == 0) 
	{ 
		PrintToServer("Player press 'B' [Buy]."); 
		return Plugin_Handled; 
	} 
	return Plugin_Continue; 
}
Всё ровно ошибка
//SourceMod Batch Compiler
// by the SourceMod Dev Team


//// block.sp
// D:\cs_go\csgo\addons\sourcemod\scripting\block.sp(16) : error 035: argument t
ype mismatch (argument 1)
//
// 1 Error.
//
// Compilation Time: 0,17 sec
// ----------------------------------------

Press enter to exit ...
Указывает на эту строку:
PHP:
PrintToServer("Player press 'B' [Buy].");
 

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
внимательно читать нужно
Кому? Он взял мой готовый код с выводом в консоль сервера, там все return'ы соблюдены, а вот как раз цифра "8" была ни к чему. В конце ставится либо "правда", либо "ложь".
А почему у него вдруг ошибка и после - загадка самого автора.
 

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #39
AlmazON, дак в том то и дело, что я это исправил и скинул ссылку на код, а у вас так оно и осталось
 
Сверху Снизу