Заказать игровой сервер Контакты (заказать плагин/исправить ошибки/другое) Поиск

[ вход ]
[ последние сообщения ]

  • Страница 1 из 1
  • 1
Форум » SourceMod >> CS:Source >> CSGO » Обсуждение » Надо сделать привязку кнопки. (При нажатии на кнопку -писало в чат кто ее нажал.)
Надо сделать привязку кнопки.
WOW_NAMES Дата: Воскресенье, 09.09.2012, 15:54:26 | Сообщение # 1
Сообщений: 170
Репутация: -1 [ +/- ]
Здравствуйте уважаемые скриптеры.
Появилась идея, но не знаю как сделать.
Необходимо что бы у игрока который нажал на кнопку F6 вышел в чат текст в котором было бы время нажатия как на сервере и его ник.
Может ктонибуть что то похожее видел???
 
Beelzebub Дата: Воскресенье, 09.09.2012, 17:19:38 | Сообщение # 2
Сообщений: 202
Репутация: 13 [ +/- ]
Code
#include <sdktools>
#include <sourcemod>
   
#include cstrike
   
// gPlaySpawn[userid] = Toggle!
   
new cl_buttons;
new g_maxplayers;
new     USE_BUTTON = IN_USE;
new notification_number;
new can_respawn;
new Handle:DeathTimers[64];
new Handle:ChatTimer[64];
new Float:g_PlayerSpawn[64];
static Handle:timer = INVALID_HANDLE;
public OnPluginStart()
{
new fds;
         for (fds=1 ; fds <= 63 ; fds++){
         g_PlayerSpawn[fds] = 0.0
         }
         CreateTimer( 60.0 , PrintRespAd, _, TIMER_REPEAT);
         can_respawn = 1;
         g_maxplayers = GetMaxClients();
         HookEvent("player_death",Event_PlayerDeath);
         HookEvent("round_start", on_round_start);
         HookEvent("player_say", Event_PlayerSay);
   
}
public Action:PrintRespAd(Handle:timer)
{
         PrintToChatAll("\x07FFFFFF[HolyRespawn] \x05This server has Holy Respawn!");
}
   
public on_round_start(Handle:event, const String:name[], bool:dontBroadcast) {
         can_respawn = 1;
         if (timer != INVALID_HANDLE)
                 CloseHandle(timer);
         new Float:length = GetConVarFloat(FindConVar("mp_roundtime")) * 60.0 - 6.0;
         LogMessage("End round in %f seconds", length);
         notification_number = 5;
         timer = CreateTimer(length, on_round_time_end);
}
   
public OnClientPutInServer(client)
{
   
         g_maxplayers = GetMaxClients();
         g_PlayerSpawn[client] = 0.0
}
   
public OnClientDisconnect(client){
         g_maxplayers = GetMaxClients();
         
                 if(DeathTimers[client] != INVALID_HANDLE)
         {
                 KillTimer(DeathTimers[client])
                 DeathTimers[client] = INVALID_HANDLE
         }
   
}
   
public OnGameFrame(){
        new x;
         for (x=1; x <= g_maxplayers; x++){
                         
                         new clt =       GetClientOfUserId(x)
                 if (IsClientInGame(x) && GetClientTeam(clt) != 1 && GetClientTeam(clt) != 0  && can_respawn == 1  && !IsPlayerAlive(x)){
                    PrintToChatAll("Yes he is!");
                 cl_buttons = GetClientButtons(clt)
                 if(cl_buttons & USE_BUTTON){
                 CS_RespawnPlayer(x);
                 }
                 }
         }
}
public Action:on_round_time_end(Handle:timer_) {
         if (notification_number > 0) {
                 timer = CreateTimer(1.0, on_round_time_end);
                 --notification_number;
         }
         else {
                 can_respawn = 0;
                 timer = INVALID_HANDLE;
                 PrintToChatAll("\x07FFFFFF[HolyRespawn] \x05The timer has hit \x07e100000:00\x05. You will stop respawning.");
                 
   
         }
}
public Action:Event_PlayerDeath(Handle:event, const String:name[], bool:dontBroadcast){
         new client = GetClientOfUserId(GetEventInt(event,"userid"));
         if (can_respawn == 1) {
                 if(g_PlayerSpawn[GetEventInt(event,"userid")] == 1.0){
                         PrintToChat(client,"\x07FFFFFF[HolyRespawn] \x05Press \x07e10000E \x05or your \x07e10000USE KEY \x05to respawn.");
                 }
                 if(g_PlayerSpawn[GetEventInt(event,"userid")] == 0 && GetClientTeam(GetEventInt(event,"userid")) != 1 )
                 {
                         PrintToChat(client,"\x07FFFFFF[HolyRespawn] \x05You will respawn in\x07e10000 [\x07FFFFFF1\x07e10000] \x05seconds.");
                         DeathTimers[client] = CreateTimer(4.0, AfterDeathLife, client);
                 }
         }
         else{
                 PrintToChatAll("\x07FFFFFF[HolyRespawn] \x05The timer has reached \x07e100000:00 \x05& you are unable to respawn.");
         }
}
   
public Action:AfterDeathLife(Handle:timerx, any:client)
{
   
         CS_RespawnPlayer(client);
}


Код давно давали. На E воскрешаться. Я не знаю может сможешь это переделать под себя.
 
Scarface_slv Дата: Воскресенье, 09.09.2012, 17:34:01 | Сообщение # 3
Сообщений: 737
Репутация: 61 [ +/- ]
на кнопку F6 вроде сделать нельзя
 
WOW_NAMES Дата: Воскресенье, 09.09.2012, 17:39:01 | Сообщение # 4
Сообщений: 170
Репутация: -1 [ +/- ]
Нет это я видел((( Это на событие тоесть на то что разрешено самой игрой прыжек там приседание - это нето.
Видел плагин который перекидывал на сервер игрока, так вот там нажатие на F3 реализовано.
 
Scarface_slv Дата: Воскресенье, 09.09.2012, 18:17:00 | Сообщение # 5
Сообщений: 737
Репутация: 61 [ +/- ]
это совсем другое, она вроде специально сделано у всех забиндина на f3
"f3" = "askconnect_accept"
а плагин не отлавливает момент нажатия на f3 а просто запускает DialogType_AskConnect
а остальное делает движок valve, ну это мое личное мнение так как особо я ничего в этом не понимаю
Code

public OnPluginStart() RegConsoleCmd( "say", CommandSay);

public Action:CommandSay(client, args)
{
    new String:ServerIp[32] = "00.00.00.000:27015";//здесь веди ип адрес сервера
    new Handle:values = CreateKeyValues("msg");
    KvSetString(values, "time", "10");    
    KvSetString(values, "title", ServerIp);    
    CreateDialog(client, values, DialogType_AskConnect);
    CloseHandle(values);
}

вот скрипт компилируй его и введи все что угодно в чате.


Сообщение отредактировал Scarface_slv - Воскресенье, 09.09.2012, 18:38:29
 
WOW_NAMES Дата: Воскресенье, 09.09.2012, 22:30:37 | Сообщение # 6
Сообщений: 170
Репутация: -1 [ +/- ]
А никак нельзя сделать бинд клавиши на клиенте или указат ьплагином что будет если клиент нажмет на клавишу???
Може как то реализовать через point_clientcommand?
 
Форум » SourceMod >> CS:Source >> CSGO » Обсуждение » Надо сделать привязку кнопки. (При нажатии на кнопку -писало в чат кто ее нажал.)
  • Страница 1 из 1
  • 1
Поиск: