Контакты Поиск

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

  • Страница 1 из 1
  • 1
Форум » SourceMod >> CS:Source >> CSGO » Обсуждение » Плагин для jail (Помогите сделать плагин для jail)
Плагин для jail
Admin0912 Дата: Суббота, 19.01.2013, 10:56:54 | Сообщение # 1
Сообщений: 57
Репутация: 3 [ +/- ]
Помогите сделать плагин для jail чтобы он убивал КТ если они не открыли jail'ы через минуту после начала раунда.
_Ws_ что то подсказал 
Код
OnFullyOpen OnOpen
OnPressed
Но я не совсем понял  ya
 
TEIN Дата: Суббота, 19.01.2013, 15:22:41 | Сообщение # 2
Сообщений: 568
Репутация: 78 [ +/- ]


Сообщение отредактировал DoK_1997 - Суббота, 19.01.2013, 15:31:53
 
Beelzebub Дата: Суббота, 19.01.2013, 23:20:32 | Сообщение # 3
Сообщений: 202
Репутация: 13 [ +/- ]
Dok, помоему он попросил помочь сделать :)
Пахнет тем что он не понимает sourcepawn и просто хочет готовый код.
 
Admin0912 Дата: Воскресенье, 20.01.2013, 09:13:54 | Сообщение # 4
Сообщений: 57
Репутация: 3 [ +/- ]
Beelzebub,
Чуток понимаю. Но тут сложновато. Жду помощи klas


Сообщение отредактировал Admin0912 - Воскресенье, 20.01.2013, 09:28:18
 
TEIN Дата: Воскресенье, 20.01.2013, 09:37:32 | Сообщение # 5
Сообщений: 568
Репутация: 78 [ +/- ]
Так я помогаю.. =) Показывай наработки
 
Beelzebub Дата: Воскресенье, 20.01.2013, 15:19:10 | Сообщение # 6
Сообщений: 202
Репутация: 13 [ +/- ]
Admin0912, покажи чего ты добился в своих наработках , а мы чем сможешь поможем.
 
Admin0912 Дата: Воскресенье, 20.01.2013, 15:38:27 | Сообщение # 7
Сообщений: 57
Репутация: 3 [ +/- ]
Какой-то бред получается


Код
#include <sourcemod>
#include <cstrike>
#include <sdktools>

public OnPluginStart()   
{
     HookSingleEntityOutput(door_index, "OnFullyOpen", OnFullyOpen_CallBack);
     HookEvent("round_start", Event_round_start);
}

public Event_round_start(Handle:event, const String:name[], bool:dontBroadcast)
{
     CreateTimer(60.0, slay, client);
}

public slay(Handle:timer, any:client)
{
     if (client > 0 && IsClientInGame(client) && GetClientTeam(client) == CS_TEAM_CT)
     {
        ServerCommand("sm_slap #CTs", userid);
        //И как то так: Если КТ не открыли дверь OnFullyOpen_CallBack им дается слей
     }
}

public OnFullyOpen_CallBack(const String:output[], caller, activator, Float:delay)   
{
     new client = GetClientOfUserId(GetEventInt(event, "userid"));
     new userid = GetClientUserId(client);
     //ServerCommand("sm_slap #%i", userid);
}


Сообщение отредактировал Admin0912 - Воскресенье, 20.01.2013, 16:24:43
 
scorpion2904 Дата: Воскресенье, 20.01.2013, 16:34:36 | Сообщение # 8
Сообщений: 68
Репутация: 5 [ +/- ]
Попробуй так:

Код
#pragma semicolon 1  

#include <sourcemod>  
#include <sdktools>  
#include <sdktools_functions>

new Handle:Time;  

new ct;

public OnPluginStart()  
{  
      HookEntityOutput("func_button" , "OnPressed", ButtonPressed);  
     HookEvent("round_start", round_start);
     HookEvent("round_end", round_end);
}  

public round_start(Handle:event, const String:name[], bool:dontBroadcast)
{
    ct = 1;
    Time = CreateTimer(60.0, Timer);
}

public Action:Timer(Handle:timer){
if(ct == 1){
    for (new i = 1; i <= MaxClients; i++) {  
      if (IsClientInGame(i) && GetClientTeam(i) == 3)
     {
       ForcePlayerSuicide(i);
     }
    }
}
Time = INVALID_HANDLE;
}

public ButtonPressed(const String:output[], caller, activator, Float:delay)  
{  
    ct=0;
}  

public round_end(Handle:event, const String:name[], bool:dontBroadcast)
{
     if (Time != INVALID_HANDLE)  
      {  
          KillTimer(Time);  
          Time = INVALID_HANDLE;  
      }  
}

Прикрепления: test.smx(2.5 Kb)
 
Admin0912 Дата: Воскресенье, 20.01.2013, 17:13:29 | Сообщение # 9
Сообщений: 57
Репутация: 3 [ +/- ]
scorpion2904,
что-то дельное но когда КТ выходит из оружейки и нажимает E открывает дверь оружейки это засчитывается за открытие jail'ов и КТшников не убивает


Сообщение отредактировал Admin0912 - Воскресенье, 20.01.2013, 17:13:48
 
Beelzebub Дата: Воскресенье, 20.01.2013, 19:45:08 | Сообщение # 10
Сообщений: 202
Репутация: 13 [ +/- ]
Не знаю может кому пригодится, автор не я только переделывал.
Может возьмешь этот плагин за основу и переделаешь. Там через кое какое время камеры сами открываются.

Решил поделиться плагином т.к он не совсем стабильный.

Прикрепления: eg_addons_jail.sp(21.1 Kb)
 
Admin0912 Дата: Понедельник, 21.01.2013, 09:29:08 | Сообщение # 11
Сообщений: 57
Репутация: 3 [ +/- ]
Цитата (Beelzebub)
Может возьмешь этот плагин за основу и переделаешь.
Переделал а ошибки бесят

Код
L 01/21/2013 - 12:22:00:  [SM]Plugin "open_jails.smx" encountered error 23: Native detected error
L 01/21/2013 - 12:22:00:  [SM]Invalid timer handle 35802de (error 3) during timer end, displayed function is timer callback, not the stack trace
L 01/21/2013 - 12:22:00:  [SM]Unable to call function "opentimer" due to above error(s).
L 01/21/2013 - 12:23:41:  [SM]Plugin "open_jails.smx" encountered error 23: Native detected error
L 01/21/2013 - 12:23:41:  [SM]Invalid timer handle 3c102ed (error 3) during timer end, displayed function is timer callback, not the stack trace
L 01/21/2013 - 12:23:41:  [SM]Unable to call function "opentimer" due to above error(s).


Код переделанного плагина

Код
#include <sourcemod>
#include <cstrike>
#include <sdktools>

#pragma semicolon 1

#define CHAT_BANNER2 "\x07FFFFFF[\x0700E5FFJailbreak\x07FFFFFF]\x07FF0000"

new rounds;
new iEnt;   
new String:EntityList[][] = {"func_door", "func_door_rotating"};
new opentime = 90;
new bool:cellsopened = false;
new Handle:gH_OpenCellsTimer = INVALID_HANDLE;
new Handle:gH_Timer = INVALID_HANDLE;

public Plugin:myinfo =   
{
     name = "Jailbreak Addons",
     author = "Unknown",
     version = "1.0"
}

public OnPluginStart()
{
     // Commands
     RegConsoleCmd("sm_open", Jail_OpenCells, "Open all cells");
       
     // Hooks
     HookEvent("round_start", Jail_RoundStart);
     HookEvent("round_end", Jail_RoundEnd, EventHookMode_Pre);
}

stock change(client)
{
     ChangeClientTeam(client, 3);
     CS_RespawnPlayer(client);
}

public IntegerAbs(integer)
{
     if(integer < 0) return -integer;
     else return integer;
}

public Action:Jail_RoundStart(Handle:event, const String:name[], bool:dontBroadcast)
{
     rounds = (GetTeamScore(2) + GetTeamScore(3) + 1);
     for(new client = 1; client <= MaxClients; client++) if(IsClientInGame(client) && IsPlayerAlive(client)) SetEntProp(client, Prop_Data, "m_takedamage", 2, 1);
     PrintToChatAll("%s Раунд: %d.", CHAT_BANNER2, rounds);
       
     cellsopened = false;
     opentime = 15;
     if(gH_OpenCellsTimer == INVALID_HANDLE && rounds != 0) gH_OpenCellsTimer = CreateTimer(1.0, opentimer, INVALID_HANDLE, TIMER_REPEAT);
}

public Action:opentimer(Handle:timer)
{
     new String:sBuffer[64];
     if(opentime == 0)
     {
        Format(sBuffer, 64, "Камеры открыты!");
        for(new client = 1; client <= MaxClients; client++) if(IsClientInGame(client))
        {
           if(IsClientInGame(client))
           {
              new Handle:hKHT = StartMessageOne("KeyHintText", client);
              BfWriteByte(hKHT, 1);
              BfWriteString(hKHT, sBuffer);
              EndMessage();
           }
        }
        if(!IsVoteInProgress()) PrintHintTextToAll(sBuffer);
        if(gH_OpenCellsTimer != INVALID_HANDLE) CloseHandle(gH_OpenCellsTimer);
        gH_OpenCellsTimer = INVALID_HANDLE;
        cellsopened = true;
        for(new i = 0; i < sizeof(EntityList); i++) while((iEnt = FindEntityByClassname(iEnt, EntityList[i])) != -1)  AcceptEntityInput(iEnt, "Open");
     }
     else
     {
        opentime--;
        Format(sBuffer, 64, "Камеры откроются через: %02i:%02i.", opentime / 60, opentime % 60);
        for(new client = 1; client <= MaxClients; client++) if(IsClientInGame(client))
        {
           if(IsClientInGame(client))
           {
              new Handle:hKHT = StartMessageOne("KeyHintText", client);
              BfWriteByte(hKHT, 1);
              BfWriteString(hKHT, sBuffer);
              EndMessage();
           }
        }
        if(!IsVoteInProgress()) PrintHintTextToAll(sBuffer);
     }
}

public Action:Jail_RoundEnd(Handle:event, const String:name[], bool:dontBroadcast)
{
     if(gH_OpenCellsTimer != INVALID_HANDLE) CloseHandle(gH_OpenCellsTimer);
     gH_OpenCellsTimer = INVALID_HANDLE;
       
     if(gH_Timer != INVALID_HANDLE) CloseHandle(gH_Timer);
     gH_Timer = INVALID_HANDLE;
}

public Action:Jail_OpenCells(client, args)
{
     decl String:string[MAX_NAME_LENGTH];
     GetClientName(client, string, sizeof(string));
       
     if(!IsClientInGame(client) || !IsPlayerAlive(client))
     {
        ReplyToCommand(client, "%s Вы должны быть живым CT, чтобы открыть камеры.", CHAT_BANNER2);
        return Plugin_Handled;
     }
       
     if(GetClientTeam(client) != 3 && GetUserAdmin(client) == INVALID_ADMIN_ID)
     {
        ReplyToCommand(client, "%s Эта команда доступна только CT.", CHAT_BANNER2);
        return Plugin_Handled;
     }
       
     if(cellsopened)
     {
        ReplyToCommand(client, "%s Камеры уже открыты!", CHAT_BANNER2);
        return Plugin_Handled;
     }
       
     for(new i = 0; i < sizeof(EntityList); i++)
     {
        while((iEnt = FindEntityByClassname(iEnt, EntityList[i])) != -1)
        {
           AcceptEntityInput(iEnt, "Open");
        }
     }
       
     PrintToChatAll("%s %N открыл камеры.", CHAT_BANNER2, client);
     cellsopened = true;
       
     return Plugin_Handled;
}

Прикрепления: open_jails.sp(3.9 Kb)


Сообщение отредактировал Admin0912 - Понедельник, 21.01.2013, 09:29:35
 
Форум » SourceMod >> CS:Source >> CSGO » Обсуждение » Плагин для jail (Помогите сделать плагин для jail)
  • Страница 1 из 1
  • 1
Поиск: