Проблемма со Spawn Tools 7)

Обсуждаем все, что относится к выделенным серверам *NIX (Unix, Linux) и Windows
Ответить
Сообщение
Автор
Аватара пользователя
tarelka95
Лейтенант
Лейтенант
Сообщения: 139
Зарегистрирован: 11.11.2009
Поблагодарили: 9 раз
Контактная информация:

#1 Сообщение 28.02.2012, 20:10

ну начнем с того что я искал плагин(для sourcemod), который сможет в определенной мапе, определенной команде, ставить пользовательский spawn(место возрождения игрока) по определенным координатам, причем который отключает стандартные spawn точки.
по началу я вспомнил по mani admin plugin, там как раз было все что мне нужно, но потом разочаровался в том, что нельзя стандартные точки отключить.(так сказать просто добавление дополнительных точек, к примеру если на серве играет 64, а на мапе их всего 24)
потом поискав, нашел хороший плагин Spawn Tools 7, всем было все что мне надо, но он был сделан только для css, а мне надо было для tf2...(сразу поясняю в tf2 все работало кроме добавления самих точек spawn)
начал смотреть исходники Spawn Tools 7, нашел что отвечает за spawn точки, команды: info_player_terrorist и info_player_counterterrorist
хотел просто заменить эти команды на команды из tf2 ,но не тут то было...(ох уж эти valve)
вообщем откопал статейку на форуме стима, но выделю из нее самое главное:

Код: Выделить всё

Counter-Strike: Source
info_player_terrorist
info_player_counterterrorist
Half-Life 2: DeathMatch
info_player_rebel 
info_player_combine
Team Fortress II
info_player_teamspawn (RED)
info_player_teamspawn (BLUE)
тоисть за spawn точки в tf2 отвечает всего лишь одна команда info_player_teamspawn
потом прочитав еще одну статью, откуда не знаю, и как я понял(там было написано по английски), команда(red,blu) зависит от места респа, ну типо где находится комнатка команды.(но перевод мог быть не совсем точный :crazy: ) blink
начал искать инфу по этой команде info_player_teamspawn и нашел :) :

Код: Выделить всё

TFTeam:
Team <choices>
Team
0 : Any
2 : Red
3 : Blue
вот только теперь не знаю, как воплотить это все в плагин)))
ну допустим заместо команды info_player_terrorist поставим info_player_teamspawn, а теперь главный вопрос в каком синтаксисе писать Team? :pardon:
уж точно не info_player_teamspawn 2, ибо у этой команды есть много параметров, а не только Team...

или подскажите где надыбать плагин который будет работать со spawn точками в игре tf2?
"Главное скилл, а не девайсы!"
"Все нужно делать с юмором", - сказал палач и начал рубить голову дольками.
"За мать Орду, за батьку Тралла, начистим аликам <...>." - кричалка ордынцев из игры World of Warcraft
Steam Wallet xD
Изображение
Admin писал(а):Попросите модератора поднять репутацию оказавшему вам помощь человеку через кнопку «Жалоба»!

Аватара пользователя
PhO3n1X
Сержант
Сержант
Сообщения: 96
Зарегистрирован: 01.01.2006
Откуда: Latvia
Поблагодарили: 1 раз
Контактная информация:

#2 Сообщение 28.02.2012, 21:12

Попробуй так

Код: Выделить всё

CreateSpawn(Float:DataFloats[5], bool:isNew)
{
	decl Float:posVec[3], Float:angVec[3];
	posVec[0] = DataFloats[0];
	posVec[1] = DataFloats[1];
	posVec[2] = DataFloats[2];
	angVec[0] = 0.0;
	angVec[1] = DataFloats[3];
	angVec[2] = 0.0;

	new entity = CreateEntityByName("info_player_teamspawn");
	DispatchKeyValue(entity, "Team", RoundFloat(DataFloats[4]));
	if (DispatchSpawn(entity))
	{
		TeleportEntity(entity, posVec, angVec, NULL_VECTOR);
		if (isNew)
			PushArrayArray(CustSpawnsADT, DataFloats);

		return true;
	}

	return false;
}
GunGame.LV - Pro Gamers Portal | CS:S GG & DM Servers
Изображение

Изображение Изображение

Аватара пользователя
tarelka95
Лейтенант
Лейтенант
Сообщения: 139
Зарегистрирован: 11.11.2009
Поблагодарили: 9 раз
Контактная информация:

#3 Сообщение 28.02.2012, 22:10

PhO3n1X писал(а):Попробуй так

Код: Выделить всё

CreateSpawn(Float:DataFloats[5], bool:isNew)
...
	new entity = CreateEntityByName("info_player_teamspawn");
	DispatchKeyValue(entity, "Team", RoundFloat(DataFloats[4]));
...
честно говоря я не умею программировать в sourcemod, не могли бы вы исходник отредактировать?
отредактировать как вы сказали я могу в принципе и сам, но не смогу испытать, ибо не все подправлено...
вы написали как исправить в разделе:
CreateSpawn(Float:DataFloats[5], bool:isNew) - как я понял это нужно для создания spawn точки
а еще есть:
public Action:ShowEditModeGoodies(Handle:timer) - как я понял это нужно для работы счетчика spawn точек
RemoveAllDefaultSpawns() - как я понял это нужно для удаления стандартных spawn точек(всех spawn точек)
RemoveSingleDefaultSpawn(Float:fVec[3]) - как я понял это нужно для удаления стандартной spawn точки
RemoveSpawn(client) - как я понял это нужно для удаления spawn точки
и будет ли правильно работать?:
InitializeNewSpawn(client, team) - кажется выполняет создание spawn точки.

был

Код: Выделить всё

CreateSpawn(Float:DataFloats[5], bool:isNew)
...
	new entity = CreateEntityByName(DataFloats[4] == 2.0 ? "info_player_terrorist" : "info_player_counterterrorist");
...
стал

Код: Выделить всё

CreateSpawn(Float:DataFloats[5], bool:isNew)
...
	new entity = CreateEntityByName("info_player_teamspawn");
	DispatchKeyValue(entity, "Team", RoundFloat(DataFloats[4]));
...
а этот раздел имеет немного другой вид(в принципе как и все остальные) :( :

Код: Выделить всё

RemoveAllDefaultSpawns()
{
	new maxent = GetMaxEntities();
	decl String:sClassName[64];
	for (new i = MaxClients; i < maxent; i++)
	{
		if (IsValidEdict(i) && IsValidEntity(i) && GetEdictClassname(i, sClassName, sizeof(sClassName)) &&
		(StrEqual(sClassName, "info_player_terrorist") || StrEqual(sClassName, "info_player_counterterrorist")))
			RemoveEdict(i);
	}
}
p.s. блин я бы сделал остальное, тем более пример дан, но я не умею :cry:, было бы проще если бы заменил тока команду, а тут надо алгоритм выполнения команды менять...
"Главное скилл, а не девайсы!"
"Все нужно делать с юмором", - сказал палач и начал рубить голову дольками.
"За мать Орду, за батьку Тралла, начистим аликам <...>." - кричалка ордынцев из игры World of Warcraft
Steam Wallet xD
Изображение
Admin писал(а):Попросите модератора поднять репутацию оказавшему вам помощь человеку через кнопку «Жалоба»!

Аватара пользователя
tarelka95
Лейтенант
Лейтенант
Сообщения: 139
Зарегистрирован: 11.11.2009
Поблагодарили: 9 раз
Контактная информация:

#4 Сообщение 02.03.2012, 16:06

SpawnTools7.sp(290) : error 035: argument type mismatch (argument 3)
(290) это DispatchKeyValue(entity, "Team", RoundFloat(DataFloats[4]));

Аватара пользователя
-sang-
Нович0к
Нович0к
Сообщения: 13
Зарегистрирован: 05.01.2009

#5 Сообщение 02.03.2012, 17:23

tarelka95 писал(а):SpawnTools7.sp(290) : error 035: argument type mismatch (argument 3)
(290) это DispatchKeyValue(entity, "Team", RoundFloat(DataFloats[4]));
для метода DispatchKeyValue третий параметр должен быть типа String.

Если нужен Float, используй DispatchKeyValueFloat

Аватара пользователя
tarelka95
Лейтенант
Лейтенант
Сообщения: 139
Зарегистрирован: 11.11.2009
Поблагодарили: 9 раз
Контактная информация:

#6 Сообщение 04.03.2012, 13:36

мне нужно чтобы работало))) сможешь покопаться в исходниках?
"Главное скилл, а не девайсы!"
"Все нужно делать с юмором", - сказал палач и начал рубить голову дольками.
"За мать Орду, за батьку Тралла, начистим аликам <...>." - кричалка ордынцев из игры World of Warcraft
Steam Wallet xD
Изображение
Admin писал(а):Попросите модератора поднять репутацию оказавшему вам помощь человеку через кнопку «Жалоба»!

Ответить