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

Вернуться   Polygon4.Net - Тактические игры online > Общие вопросы > Другие игры > Counter-Strike : Source - ZombieMod > Общие вопросы. ZM
Справка Пользователи Календарь Галерея Закачка файлов Поиск Сообщения за день Все разделы прочитаны

Общие вопросы. ZM Обсуждаем вопросы связанные непосредственно с игрой

Ответ
 
Опции темы Опции просмотра
Старый 29.06.2009, 02:03   #1
TPOLI,KUU[B/IKCM]
Читатель
 
Аватар для TPOLI,KUU[B/IKCM]
 
Регистрация: 12.01.2008
Сообщений: 2,089
Поблагодарил(а): 644
Получил(а): 492 "Спасибо" за 339 сообщений
Сказал(а) Фууу!: 25
Сказали Фууу! 22 раз(а) в 13 сообщениях
Репутация: 514 TPOLI,KUU[B/IKCM] любим всеми как пельмениTPOLI,KUU[B/IKCM] любим всеми как пельмениTPOLI,KUU[B/IKCM] любим всеми как пельмениTPOLI,KUU[B/IKCM] любим всеми как пельмениTPOLI,KUU[B/IKCM] любим всеми как пельмениTPOLI,KUU[B/IKCM] любим всеми как пельмени
Награды (1) За умелое ведение спора 
Хотя чисто теоретически можно наверное забабахать плагин, который по истечение определенного времени будет портировать всех теров на респ.
Например, зомб появляется через 30сек, а через 32 сек его и тех, кого он успел цапнуть портует на респ. На досуге попробую это сделать.
__________________

Здесь слово "русский" не вполне политкорректно,
Вот "россиянин" - это "чисто" и "конкретно". (с) Кинчев
TPOLI,KUU[B/IKCM] вне форума   Ответить с цитированием
Старый 29.06.2009, 08:33   #2
HAM$ter
ХОМАсапиенс
Генерал армии
 
Аватар для HAM$ter
 
Регистрация: 16.01.2008
Адрес: hAmsterDam
Имя: Вадимка
Сообщений: 6,085
Поблагодарил(а): 1,002
Получил(а): 1,462 "Спасибо" за 816 сообщений
Сказал(а) Фууу!: 0
Сказали Фууу! 6 раз(а) в 6 сообщениях
Репутация: 1569 HAM$ter на пути к светлому будущемуHAM$ter на пути к светлому будущемуHAM$ter на пути к светлому будущемуHAM$ter на пути к светлому будущемуHAM$ter на пути к светлому будущемуHAM$ter на пути к светлому будущемуHAM$ter на пути к светлому будущемуHAM$ter на пути к светлому будущемуHAM$ter на пути к светлому будущемуHAM$ter на пути к светлому будущемуHAM$ter на пути к светлому будущему
Цитата:
Сообщение от TPOLI,KUU[B/IKCM] Посмотреть сообщение
Хотя чисто теоретически можно наверное забабахать плагин, который по истечение определенного времени будет портировать всех теров на респ.
Например, зомб появляется через 30сек, а через 32 сек его и тех, кого он успел цапнуть портует на респ. На досуге попробую это сделать.
всю толпу в одну точку
__________________

Мужчины любят женщин, женщины любят детей, дети любят хомячков, а хомячки - никого не любят...
HAM$ter вне форума   Ответить с цитированием
Реклама
Старый 29.06.2009, 13:12   #3
TPOLI,KUU[B/IKCM]
Читатель
 
Аватар для TPOLI,KUU[B/IKCM]
 
Регистрация: 12.01.2008
Сообщений: 2,089
Поблагодарил(а): 644
Получил(а): 492 "Спасибо" за 339 сообщений
Сказал(а) Фууу!: 25
Сказали Фууу! 22 раз(а) в 13 сообщениях
Репутация: 514 TPOLI,KUU[B/IKCM] любим всеми как пельмениTPOLI,KUU[B/IKCM] любим всеми как пельмениTPOLI,KUU[B/IKCM] любим всеми как пельмениTPOLI,KUU[B/IKCM] любим всеми как пельмениTPOLI,KUU[B/IKCM] любим всеми как пельмениTPOLI,KUU[B/IKCM] любим всеми как пельмени
Награды (1) За умелое ведение спора 
Цитата:
Сообщение от HAM$ter Посмотреть сообщение
всю толпу в одну точку
Почему в одну точку?
Если два человека одновременно пишут зтеле, они не обязательно друг в друге застревают
__________________

Здесь слово "русский" не вполне политкорректно,
Вот "россиянин" - это "чисто" и "конкретно". (с) Кинчев
TPOLI,KUU[B/IKCM] вне форума   Ответить с цитированием
Старый 30.06.2009, 03:48   #4
TPOLI,KUU[B/IKCM]
Читатель
 
Аватар для TPOLI,KUU[B/IKCM]
 
Регистрация: 12.01.2008
Сообщений: 2,089
Поблагодарил(а): 644
Получил(а): 492 "Спасибо" за 339 сообщений
Сказал(а) Фууу!: 25
Сказали Фууу! 22 раз(а) в 13 сообщениях
Репутация: 514 TPOLI,KUU[B/IKCM] любим всеми как пельмениTPOLI,KUU[B/IKCM] любим всеми как пельмениTPOLI,KUU[B/IKCM] любим всеми как пельмениTPOLI,KUU[B/IKCM] любим всеми как пельмениTPOLI,KUU[B/IKCM] любим всеми как пельмениTPOLI,KUU[B/IKCM] любим всеми как пельмени
Награды (1) За умелое ведение спора 
Как и обещал, вот скрипт:
Код:
#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 сек.
После чего компилируйте и устанавливайте.

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

Здесь слово "русский" не вполне политкорректно,
Вот "россиянин" - это "чисто" и "конкретно". (с) Кинчев

Последний раз редактировалось TPOLI,KUU[B/IKCM]; 30.06.2009 в 03:50..
TPOLI,KUU[B/IKCM] вне форума   Ответить с цитированием
Эти 3 человек(а) поблагодарили пользователя TPOLI,KUU[B/IKCM] за полезное сообщение:
Nikret (30.06.2009), ZOMBINE (30.06.2009), Таёжник.rus (30.06.2009)
Старый 01.07.2009, 00:27   #5
TPOLI,KUU[B/IKCM]
Читатель
 
Аватар для TPOLI,KUU[B/IKCM]
 
Регистрация: 12.01.2008
Сообщений: 2,089
Поблагодарил(а): 644
Получил(а): 492 "Спасибо" за 339 сообщений
Сказал(а) Фууу!: 25
Сказали Фууу! 22 раз(а) в 13 сообщениях
Репутация: 514 TPOLI,KUU[B/IKCM] любим всеми как пельмениTPOLI,KUU[B/IKCM] любим всеми как пельмениTPOLI,KUU[B/IKCM] любим всеми как пельмениTPOLI,KUU[B/IKCM] любим всеми как пельмениTPOLI,KUU[B/IKCM] любим всеми как пельмениTPOLI,KUU[B/IKCM] любим всеми как пельмени
Награды (1) За умелое ведение спора 
вот другой вариант.
Во-первых добавлены переменные для включения плагина и установки времени.
Во-вторых первый вариант не всегда корректно работает (почему не знаю, но бывает что не всех зомбей портует).
Код:
#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 сек. Хотя это можно исправить, но не вижу смысла усложнять плагин, т.к. он предназначен для эскейпов, где автореспаун должен быть выключен.
__________________

Здесь слово "русский" не вполне политкорректно,
Вот "россиянин" - это "чисто" и "конкретно". (с) Кинчев
TPOLI,KUU[B/IKCM] вне форума   Ответить с цитированием
Эти 3 человек(а) поблагодарили пользователя TPOLI,KUU[B/IKCM] за полезное сообщение:
Nikret (01.07.2009), ZOMBINE (01.07.2009), Таёжник.rus (01.07.2009)
Старый 01.07.2009, 09:25   #6
NightDeagle.rus
0.0
Капитан
 
Аватар для NightDeagle.rus
 
Регистрация: 19.12.2008
Адрес: Москва,Бутово.
Имя: Гриха.
Сообщений: 873
Поблагодарил(а): 62
Получил(а): 88 "Спасибо" за 67 сообщений
Сказал(а) Фууу!: 0
Сказали Фууу! 0 раз(а) в 0 сообщениях
Репутация: 85 NightDeagle.rus скоро станет знаменитым
Сам писал?
NightDeagle.rus вне форума   Ответить с цитированием
Старый 01.07.2009, 14:03   #7
TPOLI,KUU[B/IKCM]
Читатель
 
Аватар для TPOLI,KUU[B/IKCM]
 
Регистрация: 12.01.2008
Сообщений: 2,089
Поблагодарил(а): 644
Получил(а): 492 "Спасибо" за 339 сообщений
Сказал(а) Фууу!: 25
Сказали Фууу! 22 раз(а) в 13 сообщениях
Репутация: 514 TPOLI,KUU[B/IKCM] любим всеми как пельмениTPOLI,KUU[B/IKCM] любим всеми как пельмениTPOLI,KUU[B/IKCM] любим всеми как пельмениTPOLI,KUU[B/IKCM] любим всеми как пельмениTPOLI,KUU[B/IKCM] любим всеми как пельмениTPOLI,KUU[B/IKCM] любим всеми как пельмени
Награды (1) За умелое ведение спора 
Цитата:
Сообщение от NightDeagle.rus Посмотреть сообщение
Сам писал?
Ну да, простенький плагин. Правда вот почему первый вариант не всегда хорошо работает не понимаю.
__________________

Здесь слово "русский" не вполне политкорректно,
Вот "россиянин" - это "чисто" и "конкретно". (с) Кинчев
TPOLI,KUU[B/IKCM] вне форума   Ответить с цитированием
Старый 01.07.2009, 23:24   #8
TPOLI,KUU[B/IKCM]
Читатель
 
Аватар для TPOLI,KUU[B/IKCM]
 
Регистрация: 12.01.2008
Сообщений: 2,089
Поблагодарил(а): 644
Получил(а): 492 "Спасибо" за 339 сообщений
Сказал(а) Фууу!: 25
Сказали Фууу! 22 раз(а) в 13 сообщениях
Репутация: 514 TPOLI,KUU[B/IKCM] любим всеми как пельмениTPOLI,KUU[B/IKCM] любим всеми как пельмениTPOLI,KUU[B/IKCM] любим всеми как пельмениTPOLI,KUU[B/IKCM] любим всеми как пельмениTPOLI,KUU[B/IKCM] любим всеми как пельмениTPOLI,KUU[B/IKCM] любим всеми как пельмени
Награды (1) За умелое ведение спора 
Код:
#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[] удаляем
-----------добавлено-----------
Хотя, погорячился.
Если кто-то зайдет в начале раунда, то респанется он чуть позже, и портнется соответственно тоже позже, поэтому первый таймер лучше оставить как есть (чтоб его могло вовремя портнуть при переборе) и добавить третий.
Я думаю принцип понятен, поэтому еще один вариант приводить не буду.
__________________

Здесь слово "русский" не вполне политкорректно,
Вот "россиянин" - это "чисто" и "конкретно". (с) Кинчев

Последний раз редактировалось TPOLI,KUU[B/IKCM]; 02.07.2009 в 00:02.. Причина: Склейка мультипостинга
TPOLI,KUU[B/IKCM] вне форума   Ответить с цитированием
Этот человек поблагодарил пользователя TPOLI,KUU[B/IKCM] за полезное сообщение:
NightDeagle.rus (02.07.2009)
Старый 02.07.2009, 00:04   #9
NightDeagle.rus
0.0
Капитан
 
Аватар для NightDeagle.rus
 
Регистрация: 19.12.2008
Адрес: Москва,Бутово.
Имя: Гриха.
Сообщений: 873
Поблагодарил(а): 62
Получил(а): 88 "Спасибо" за 67 сообщений
Сказал(а) Фууу!: 0
Сказали Фууу! 0 раз(а) в 0 сообщениях
Репутация: 85 NightDeagle.rus скоро станет знаменитым
Основное понятно,а вот то,что внутри,более интересней...
NightDeagle.rus вне форума   Ответить с цитированием
Ответ

Закладки


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


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


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