Polygon4.Net - Тактические игры online

Polygon4.Net - Тактические игры online (http://forum.polygon4.net/index.php)
-   Общие вопросы. ZM (http://forum.polygon4.net/forumdisplay.php?f=47)
-   -   Автореспавн зомби при возрождении (http://forum.polygon4.net/showthread.php?t=7510)

sokrat 27.06.2009 16:39

Автореспавн зомби при возрождении
 
Привет этот вопрос имел право уже быть
но тут немного по другому поводу!
а есть специальный скрипт какой нибудь для того что-бы
зомбаки первые при рождении на респ телепортились?
по идеи должен быть
ПОДСКАЖИТЕ ПЛЗ

nightspotlight 27.06.2009 17:46

УБЕЙСЯ!!! в одном из твоих топиков тебе ответ уже несколько раз давали.

и вообще ты не имеешь права писать потому что ты забанен, как так?

NightDeagle.rus 27.06.2009 17:55

http://s42.radikal.ru/i098/0906/54/69c3ea4f17a2.jpg

sokrat 27.06.2009 18:11

имею это другой Сократ =))
а на форум пишу
потому-что он создан для того что бы отвечать конкретно на ответа
а поиском любой сообраит воспользоватся
но если он блин не находит
так что ненадо выпендриватся ок?
кстати night deagle ты ваще куда лезишь?
ты разве не помниш что ты про админов говорил?

swat 27.06.2009 18:15

А нельзя обсуждать все в одной теме?Неугомонный,блин.

NightDeagle.rus 27.06.2009 18:18

Цитата:

Сообщение от sokrat (Сообщение 125548)
имею это другой Сократ =))
а на форум пишу
потому-что он создан для того что бы отвечать конкретно на ответа
а поиском любой сообраит воспользоватся
но если он блин не находит
так что ненадо выпендриватся ок?
кстати night deagle ты ваще куда лезишь?
ты разве не помниш что ты про админов говорил?

Куда хочу туда и лезу,а что ты мне можешь запретить?
Что-то не припоминаю ничего про админов...
То что поисковик не ищет,что тебе надо-БРЕД,ты просто даже и не ищешь,а если даже и ищешь,то вставляешь,что типа такого
Цитата:

специальный скрипт какой нибудь для того что-бы
зомбаки первые при рождении на респ телепортились?
Попробуй русскм языком писать...

Azrial 27.06.2009 18:23

sokrat
На xvideos ком поищи.Там полно скриптов для сервера.

sokrat 27.06.2009 19:01

Дигл мне переписку из ICQ скинуть сюда?
место того что-бы обсуждать и хернёй страдать лучше помоглиб

умники блин

NightDeagle.rus 27.06.2009 19:03

Цитата:

Сообщение от sokrat (Сообщение 125557)
Дигл мне переписку из ICQ скинуть сюда?
место того что-бы обсуждать и хернёй страдать лучше помоглиб

умники блин

Хочу тебя обродовать у меня нету ICQ,лол... Если ты что-то пытаешся придумать,то говори сразу...

nightspotlight 27.06.2009 19:09

Цитата:

Сообщение от sokrat (Сообщение 125548)
имею это другой Сократ =))

ну да... http://forum.polygon4.net/showpost.p...8&postcount=43

sokrat 27.06.2009 19:10

короче ребят идите нахуй =))
дигл да сори препутал ты мне это по скайпу говорил что тут админы ебанутые =))
я пойду на форум корбины он уровнем выше чем ваша параша =)))
кстати
дигл малолеточка тупорылая
=))) удачи =)

Colorado 27.06.2009 19:14

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

Цитата:

Сообщение от sokrat (Сообщение 125560)
я пойду на форум корбины он уровнем выше чем ваша параша =)))

Т_Т

Да, это Спарта!

BlueBlood 27.06.2009 19:52

Цитата:

Сообщение от sokrat (Сообщение 125560)
короче ребят идите нахуй =))
дигл да сори препутал ты мне это по скайпу говорил что тут админы ебанутые =))
я пойду на форум корбины он уровнем выше чем ваша параша =)))
кстати
дигл малолеточка тупорылая
=))) удачи =)

Это такой, как описал дигла, т.к руки у тебя растут не из того места, какое пологается, что поиском не умеешь пользоваться:boast:

Nikret 27.06.2009 20:01

sokrat, Как не стыдно - позоришь имя великого человека :hysteric:

Террорист 27.06.2009 20:08

Цитата:

Сообщение от sokrat (Сообщение 125560)
короче ребят идите гулять

В последнее время это все чаще и чаще происходит...

NightDeagle.rus 27.06.2009 20:32

Цитата:

Сообщение от sokrat (Сообщение 125560)
дигл да сори препутал ты мне это по скайпу говорил что тут админы ебанутые =))

Ты немного перепутал,я сказал они тупят,а не точно они ...,а это очень разные вещи...

Я великий? :boast:

Цитата:

дигл малолеточка тупорылая
Ну и что? Я ещё успею побывать не "малолеточкой",тем более в этом нет ничего плохого...

ioan-velikii 27.06.2009 22:14

Цитата:

Сообщение от NightDeagle.rus (Сообщение 125567)
Я великий? :boast:
.

неее))):xD2:

TPOLI,KUU[B/IKCM] 28.06.2009 20:46

Врядли такой скрипт существует. Для этого исходник править нужно. К тому же в поздних версиях зомбимода эта опция есть.

Таёжник.rus 28.06.2009 23:13

Цитата:

Сообщение от TPOLI,KUU[B/IKCM] (Сообщение 125658)
Врядли такой скрипт существует. Для этого исходник править нужно. К тому же в поздних версиях зомбимода эта опция есть.

Вообще-то возможность телепорта есть в последних 3-4 версиях мода... Все первые зомби телепортируются на респаун после появления

Анк-пулеметчик 28.06.2009 23:17

http://s.lurkmore.ru/images/8/8b/1220024857654.gif :bo:

TPOLI,KUU[B/IKCM] 29.06.2009 02:03

Хотя чисто теоретически можно наверное забабахать плагин, который по истечение определенного времени будет портировать всех теров на респ.
Например, зомб появляется через 30сек, а через 32 сек его и тех, кого он успел цапнуть портует на респ. На досуге попробую это сделать.

HAM$ter 29.06.2009 08:33

Цитата:

Сообщение от TPOLI,KUU[B/IKCM] (Сообщение 125691)
Хотя чисто теоретически можно наверное забабахать плагин, который по истечение определенного времени будет портировать всех теров на респ.
Например, зомб появляется через 30сек, а через 32 сек его и тех, кого он успел цапнуть портует на респ. На досуге попробую это сделать.

всю толпу в одну точку:JC_see_stars:

TPOLI,KUU[B/IKCM] 29.06.2009 13:12

Цитата:

Сообщение от HAM$ter (Сообщение 125698)
всю толпу в одну точку:JC_see_stars:

Почему в одну точку?
Если два человека одновременно пишут зтеле, они не обязательно друг в друге застревают

TPOLI,KUU[B/IKCM] 30.06.2009 03:48

Как и обещал, вот скрипт:
Код:

#include <sourcemod>
#include <sdktools_functions>
#include <sdktools>
#include <cstrike>
#include <hacks>

#define VERSION "0.5"

new Float:spawnLoc[MAXPLAYERS+1][3];

public Plugin:myinfo =
{
        name = "tele_zm",
        author = "TPOLI,KUU[B/IKCM]",
        description = "tele for zombie",
        version = VERSION,
        url = "www.sourcemod.net"
};

public OnPluginStart()
{
        HookEvent("round_freeze_end", RoundFreezeEnd);
        HookEvent("player_spawn", PlayerSpawn);
}

public RoundFreezeEnd(Handle:event, const String:name[], bool:dontBroadcast)
{
        CreateTimer(20.0, TeleZombie, _, TIMER_FLAG_NO_MAPCHANGE);
}

public Action:TeleZombie(Handle:timer)
{
        for (new i = 1; i <= MaxClients+1; i++)
        {       
                if (GetClientHealth(i) > 100)
                {
                        TeleportEntity(i, spawnLoc[i], NULL_VECTOR, NULL_VECTOR);
                }
        }
}
public Action:PlayerSpawn(Handle:event, const String:name[], bool:dontBroadcast)
{
        new index = GetClientOfUserId(GetEventInt(event, "userid"));
        GetClientAbsOrigin(index, spawnLoc[index]);
}

Время выставляется в CreateTimer(20.0, TeleZombie, _, TIMER_FLAG_NO_MAPCHANGE);.
В данном варианте 20 сек.
После чего компилируйте и устанавливайте.

Плагин портует всех зомбей, которые появятся к этому моменту.
(т.е. можно специально портовать чуть позже, чтобы зомби имел возможнось кого-нить цапнуть :aga:).
Портуются зомби на те места, на которых спаунились.

TPOLI,KUU[B/IKCM] 01.07.2009 00:27

вот другой вариант.
Во-первых добавлены переменные для включения плагина и установки времени.
Во-вторых первый вариант не всегда корректно работает (почему не знаю, но бывает что не всех зомбей портует).
Код:

#include <sourcemod>
#include <sdktools_functions>
#include <sdktools>
#include <cstrike>
#include <hacks>

#define VERSION "1.0"

new Float:spawnLoc[MAXPLAYERS+1][3];
new Handle:Switch;
new Handle:tLIMIT;
new bool: aRestrict[MAXPLAYERS+1];

public Plugin:myinfo =
{
        name = "tele_zm",
        author = "TPOLI,KUU[B/IKCM]",
        description = "tele zombie",
        version = VERSION,
        url = "www.sourcemod.net"
};

public OnPluginStart()
{
        Switch = CreateConVar("tele_on","1","Turns the plugin on and off 1/0",FCVAR_NOTIFY);
        tLIMIT = CreateConVar("time_tele","20.0","time v sec");
        HookEvent("round_freeze_end", RoundFreezeEnd);
        HookEvent("player_spawn", PlayerSpawn);
}

public RoundFreezeEnd(Handle:event, const String:name[], bool:dontBroadcast)
{
        new Float:time = GetConVarFloat(tLIMIT);
        CreateTimer(time, TeleZombie, _, TIMER_FLAG_NO_MAPCHANGE);
}

public Action:TeleZombie(Handle:timer)
{
        new maxplayers = GetMaxClients();
        for (new i = 1; i <= maxplayers; i++)
        {
                if (GetClientHealth(i) > 100 && GetConVarInt(Switch) && aRestrict[i] != true)
                {
                        TeleportEntity(i, spawnLoc[i], NULL_VECTOR, NULL_VECTOR);
                        aRestrict[i] = true;
                }
        }
}

//-----------------------------------------------------------------------------------------------------

public Action:PlayerSpawn(Handle:event, const String:name[], bool:dontBroadcast)
{
        new client = GetClientOfUserId(GetEventInt(event, "userid"));
        GetClientAbsOrigin(client, spawnLoc[client]);
        new Float:time = GetConVarFloat(tLIMIT);
        CreateTimer(time+5.0, TeleZombie2, client, TIMER_FLAG_NO_MAPCHANGE);
        aRestrict[client] = false;
}

public Action:TeleZombie2(Handle:timer, any:index)
{
        if (GetClientHealth(index) > 100 && GetConVarInt(Switch) && aRestrict[index] != true)
        {
                TeleportEntity(index, spawnLoc[index], NULL_VECTOR, NULL_VECTOR);
                aRestrict[index] = true;
        }
}

Недостаток этого варианта, что добавлен отсчет времени от спауна. Соответственно, если включен автореспаун, то после возрождения зомбика его (одного) опять портнет на респ через "time_tele"+5 сек. Хотя это можно исправить, но не вижу смысла усложнять плагин, т.к. он предназначен для эскейпов, где автореспаун должен быть выключен.

NightDeagle.rus 01.07.2009 09:25

Сам писал? :tick:

TPOLI,KUU[B/IKCM] 01.07.2009 14:03

Цитата:

Сообщение от NightDeagle.rus (Сообщение 126027)
Сам писал? :tick:

Ну да, простенький плагин. Правда вот почему первый вариант не всегда хорошо работает не понимаю.

NightDeagle.rus 01.07.2009 19:27

Цитата:

Сообщение от TPOLI,KUU[B/IKCM] (Сообщение 126064)
Ну да, простенький плагин. Правда вот почему первый вариант не всегда хорошо работает не понимаю.

А где учился не подскажешь?

TPOLI,KUU[B/IKCM] 01.07.2009 20:21

Цитата:

Сообщение от NightDeagle.rus (Сообщение 126103)
А где учился не подскажешь?

Да нигде. Просто берешь сходный (или несколько сходных) по назначению плагин и выковыриваешь из него, то что тебе нужно. Че-нить простенькое не проблемма так накатать.
Если хочешь могу этот плагин расписать, как и че он делает.

NightDeagle.rus 01.07.2009 21:26

Цитата:

Сообщение от TPOLI,KUU[B/IKCM] (Сообщение 126116)
Да нигде. Просто берешь сходный (или несколько сходных) по назначению плагин и выковыриваешь из него, то что тебе нужно. Че-нить простенькое не проблемма так накатать.
Если хочешь могу этот плагин расписать, как и че он делает.

Давай) По Steam? Аськи нету,но есть скайп)

TPOLI,KUU[B/IKCM] 01.07.2009 23:24

Код:

#include <sourcemod>  Типо подгружает библиотеки (здесь правда лишних напихал)
#include <sdktools_functions>
#include <sdktools>
#include <cstrike>
#include <hacks>

#define VERSION "1.0"    Версия (число не особо важно)

new Float:spawnLoc[MAXPLAYERS+1][3];  переменные действующие на весь плагин
new Handle:Switch;
new Handle:tLIMIT;
new bool: aRestrict[MAXPLAYERS+1];

public Plugin:myinfo =        информация о плагине. Первые три строчки можно редактироваать как угодно
{
        name = "tele_zm",
        author = "TPOLI,KUU[B/IKCM]",
        description = "tele zombie",
        version = VERSION,
        url = "www.sourcemod.net"
};

public OnPluginStart()          действия, выполняемые при запуске плагина
{
        Switch = CreateConVar("tele_on","1","Turns the plugin on and off 1/0",FCVAR_NOTIFY);    Создание переменных
        tLIMIT = CreateConVar("time_tele","20.0","time v sec");
        HookEvent("round_freeze_end", RoundFreezeEnd);  регистрирует конец заморозки (во время закупки) и выполняет соответствующее действие
        HookEvent("player_spawn", PlayerSpawn);  регистрирует спаун игроков

        AutoExecConfig(true, "zm_tele");  автоматическое создание конфиг файла
}

public RoundFreezeEnd(Handle:event, const String:name[], bool:dontBroadcast)        действие выполняемое в конце заморозки
{
        new Float:time = GetConVarFloat(tLIMIT);        создаем новую перенменную и записываем  в нее из конфига, время через которое зомбаки будут телепортироваться
        CreateTimer(time, TeleZombie, _, TIMER_FLAG_NO_MAPCHANGE); Запускаем таймер, при срабатывании которого плагин выполнит следующее действие
}

public Action:TeleZombie(Handle:timer)  действие, выполняемое при срабатывании таймера
{
        new maxplayers = GetMaxClients();        Записываем в новую переменную число игроков
        for (new i = 1; i <= maxplayers; i++)      Цикл, который должен проитись по всем игрокам (почему то не по всем проходится, почему и понадобилось дорабатывать плангин)
        {

                if (GetClientHealth(i) > 100 && GetConVarInt(Switch) && aRestrict[i] != true)        условие (если у игрока больше 100хп, плагин включен и игрок еще не портовался)
                {
                        TeleportEntity(i, spawnLoc[i], NULL_VECTOR, NULL_VECTOR);    телепортирует игрока
                        aRestrict[i] = true;  для данного игрока записываем что он портнулся
                }
        }
}

//-----------------------------------------------------------------------------------------------------

public Action:PlayerSpawn(Handle:event, const String:name[], bool:dontBroadcast)    действие выполняемое при спауне
{
        new client = GetClientOfUserId(GetEventInt(event, "userid"));    в переменную записываем индификатор игрока
        GetClientAbsOrigin(client, spawnLoc[client]);    получаем координаты игрока и записываем в другую переменную
        new Float:time = GetConVarFloat(tLIMIT);
        CreateTimer(time+5.0, TeleZombie2, client, TIMER_FLAG_NO_MAPCHANGE);    запускаем таймер (ко времени добавляем 5 сек, т.к. спаунятся игроки на 5 сек раньше, чем кончается заморозка)
        aRestrict[client] = false;    записываем для данного игрока, что он еще не портнулся
}

public Action:TeleZombie2(Handle:timer, any:index)  при срабатывании этого таймера делаем следующее
{
        if (GetClientHealth(index) > 100 && GetConVarInt(Switch) && aRestrict[index] != true)    проверем что игрок зомби, плагин включен и он еще не портовался
        {
                TeleportEntity(index, spawnLoc[index], NULL_VECTOR, NULL_VECTOR);  портуем его
                aRestrict[index] = true;    записываем что он портнулся
        }
}

-----------добавлено-----------
В принципе первый таймер можно удлинить и при его срабатывании не проверять всех игроков на зомбячество, а записывать булеановскую переменную, которая будет означать, что портировать больше не надо.
А при срабатывании второго таймера проверять эту переменную.
А при регистрации конца заморозки записывать в нее, что телепортировать можно.
Только это переменную надо зарегистрировать в начале раунда.

Тогда плагин будет корректно работать и при автореспауне ;)
-----------добавлено-----------
вот пример:
Код:

#include <sourcemod>
#include <sdktools_functions>
#include <sdktools>
#include <cstrike>
#include <hacks>

#define VERSION "1.0"

new Float:spawnLoc[MAXPLAYERS+1][3];
new Handle:Switch;
new Handle:tLIMIT;
new bool: monatele;

public Plugin:myinfo =
{
        name = "tele_zm",
        author = "TPOLI,KUU[B/IKCM]",
        description = "tele zombie",
        version = VERSION,
        url = "www.sourcemod.net"
};

public OnPluginStart()
{
        Switch = CreateConVar("tele_on","1","Turns the plugin on and off 1/0",FCVAR_NOTIFY);
        tLIMIT = CreateConVar("time_tele","20.0","time v sec");
        HookEvent("round_freeze_end", RoundFreezeEnd);
        HookEvent("player_spawn", PlayerSpawn);
}

public RoundFreezeEnd(Handle:event, const String:name[], bool:dontBroadcast)
{
        new Float:time = GetConVarFloat(tLIMIT);
        CreateTimer(time+5.0, TeleZombie, _, TIMER_FLAG_NO_MAPCHANGE);
        monatele = true;
}

public Action:TeleZombie(Handle:timer)
{
        monatele = false;
}

//-----------------------------------------------------------------------------------------------------

public Action:PlayerSpawn(Handle:event, const String:name[], bool:dontBroadcast)
{
        new client = GetClientOfUserId(GetEventInt(event, "userid"));
        GetClientAbsOrigin(client, spawnLoc[client]);
        new Float:time = GetConVarFloat(tLIMIT);
        CreateTimer(time+5.0, TeleZombie2, client, TIMER_FLAG_NO_MAPCHANGE);
}

public Action:TeleZombie2(Handle:timer, any:index)
{
        if (GetClientHealth(index) > 100 && GetConVarInt(Switch) && monatele == true)
        {
                TeleportEntity(index, spawnLoc[index], NULL_VECTOR, NULL_VECTOR);
        }
}

В этом случае проверка на то что зомб уже портнулся не надо, поэтому переменную aRestrict[] удаляем
-----------добавлено-----------
Хотя, погорячился.
Если кто-то зайдет в начале раунда, то респанется он чуть позже, и портнется соответственно тоже позже, поэтому первый таймер лучше оставить как есть (чтоб его могло вовремя портнуть при переборе) и добавить третий.
Я думаю принцип понятен, поэтому еще один вариант приводить не буду. ;)

NightDeagle.rus 02.07.2009 00:04

Основное понятно,а вот то,что внутри,более интересней...

TPOLI,KUU[B/IKCM] 02.07.2009 00:09

Цитата:

Сообщение от NightDeagle.rus (Сообщение 126149)
Основное понятно,а вот то,что внутри,более интересней...

где внутри?

NightDeagle.rus 02.07.2009 00:58

Цитата:

Сообщение от TPOLI,KUU[B/IKCM] (Сообщение 126151)
где внутри?

В самом скрипте) Допустим :

Цитата:

public OnPluginStart()
{
Switch = CreateConVar("tele_on","1","Turns the plugin on and off 1/0",FCVAR_NOTIFY); Создание переменных
tLIMIT = CreateConVar("time_tele","20.0","time v sec");
HookEvent("round_freeze_end", RoundFreezeEnd); регистрирует конец заморозки (во время закупки) и выполняет соответствующее действие
HookEvent("player_spawn", PlayerSpawn); регистрирует спаун игроков

AutoExecConfig(true, "zm_tele"); автоматическое создание конфиг файла
}



То что показал.
То что хотелось узнать...

TPOLI,KUU[B/IKCM] 02.07.2009 01:52

Switch = CreateConVar("tele_on","1","Turns the plugin on and off 1/0",FCVAR_NOTIFY);

Создаем серверную переменную "tele_on", задаем ее значение "1" и присваиваем это значение переменной Switch
"Turns the plugin on and off 1/0" - описание переменной (как хотим так и описываем, чтоб в конфиг файле потом было понятно что она делает)
FCVAR_NOTIFY - сам не знаю, что значит. Просто в образце (другом плагине) было так

tLIMIT = CreateConVar("time_tele","20.0","time v sec");

Все тоже самое, ток нет FCVAR_NOTIFY (опять же по образцу)

HookEvent("round_freeze_end", RoundFreezeEnd);

HookEvent - команда означающая, что плагин будет отслеживать определенное событие
"round_freeze_end" - событие, которое отслеживается. Количество таких событий ограничено и из каждого можно почерпнуть какие-то данные
Например из "player_death" можно выковырять кого убили, кто убил, каким оружием, был ли хедшот и еще что-то.
В данном случае мв тупо регистрируем само событие.
Т.е. если оно происходит выполняем какое-нить действие.
В данном случае RoundFreezeEnd (название не принципиально, но в плагине необходимо его расписать)

HookEvent("player_spawn", PlayerSpawn);

Тоже самое. Только регистрируется событие Спаун. Т.е. когда игрок спаунится выполняется последовательность, описанная в PlayerSpawn
Отсюда мы правда выковыриваем кто респаунился и все действия производим с ним.

Весь остальной текст - описание этих последовательностей (действий) и подпоследовательностей


Часовой пояс GMT +5, время: 02:27.

Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd. Перевод: zCarot
Khorost Group© 2002-2021