PDA

Просмотр полной версии : Автореспавн зомби при возрождении


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

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

Azrial
27.06.2009, 18:23
sokrat
На xvideos ком поищи.Там полно скриптов для сервера.

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

умники блин

NightDeagle.rus
27.06.2009, 19:03
Дигл мне переписку из ICQ скинуть сюда?
место того что-бы обсуждать и хернёй страдать лучше помоглиб

умники блин

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

nightspotlight
27.06.2009, 19:09
имею это другой Сократ =))

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

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

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


я пойду на форум корбины он уровнем выше чем ваша параша =)))


Т_Т

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

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

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

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

Террорист
27.06.2009, 20:08
короче ребят идите гулять

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

NightDeagle.rus
27.06.2009, 20:32
дигл да сори препутал ты мне это по скайпу говорил что тут админы ебанутые =))


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

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

дигл малолеточка тупорылая

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

ioan-velikii
27.06.2009, 22:14
Я великий? :boast:
.

неее))):xD2:

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

Таёжник.rus
28.06.2009, 23:13
;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
;125691']Хотя чисто теоретически можно наверное забабахать плагин, который по истечение определенного времени будет портировать всех теров на респ.
Например, зомб появляется через 30сек, а через 32 сек его и тех, кого он успел цапнуть портует на респ. На досуге попробую это сделать.

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

TPOLI,KUU[B/IKCM]
29.06.2009, 13:12
всю толпу в одну точку: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
Сам писал? :tick:
Ну да, простенький плагин. Правда вот почему первый вариант не всегда хорошо работает не понимаю.

NightDeagle.rus
01.07.2009, 19:27
;126064']Ну да, простенький плагин. Правда вот почему первый вариант не всегда хорошо работает не понимаю.

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

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

NightDeagle.rus
01.07.2009, 21:26
;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
02.07.2009, 00:58
;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
Отсюда мы правда выковыриваем кто респаунился и все действия производим с ним.

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