PDA

Просмотр полной версии : [Вопрос] Анти Team Shot



maccoll
08.07.2014, 19:08
Как сделать так,чтобы когда игроки играли за одну команду не могли наносить урон друг другу?
То есть когда один стреляет в другого игрока по команде по нему урона не идет.

L0ndl3m
08.07.2014, 19:13
SetPlayerTeam(playerid, teamid);
Где playerid - ID игрока, присваиваемому ID команды, а teamid - ID команды ( 255 ID команды = обычный игрок без команды ).

Если у игрока, в которого стреляют такая же команда как и у нападающего, здоровье отниматься не будет.

maccoll
08.07.2014, 19:24
Немного не понял...
Допустим хочу установить эту фигню грув,где мне найти ID грува?
И куда именно вписывать это?

L0ndl3m
08.07.2014, 19:46
Недавно тему скляпал, чтобы понятнее было: Тык (http://pro-pawn.ru/showthread.php?9577).

А и не нужно узнавать ID грува. Вы просто для удобства создайте константы, чтобы знать какой ID у какой команды, допустим это ко всем константам, переменным, глобально:


enum
{
GROVE_STREET_TEAM_ID = 0,
AZTECAS_TEAM_ID, // 1
RIFA_TEAM_ID, // 2
TRIADS_TEAM_ID // 3
}


Далее при установке переменной игрока с бандой устанавливаете команду игроку, допустим:

SetPlayerTeam(playerid, AZTECAS_TEAM_ID); // Установит игроку команду ацтеков

maccoll
08.07.2014, 20:24
Собсна,вот: http://i031.radikal.ru/1407/35/d5e825995770.png

L0ndl3m
08.07.2014, 20:29
Так подождите, объясните ещё раз, в каком смысле за одну команду? Массив с ID'ом банды игрока есть? Обычно что-то вроде gTeam должно быть. Как вы узнаёте в какой банде игрок?

maccoll
08.07.2014, 20:32
Какой же это геморрой.
Допустим,есть GROVE STREET,участники GROVE,при попадании в друг друга ганом,НЕ должны получать урон.
gTeam есть (без понятия что это,в павно 6 дней от силы)
Прошу прощения за тупость

L0ndl3m
08.07.2014, 20:34
У каждой команды свой скин?

maccoll
08.07.2014, 20:35
Да.

L0ndl3m
08.07.2014, 20:36
ID'ы скинов каждой команды можете выписать?

Допустим грув: 105, баллас: 102, 103 и т.д.

maccoll
08.07.2014, 20:40
ID`ы ГРУВ: 0,269,270,271,106,105
ID`ы БАЛЛАС: 102,103,104
ID`ы ВАГОС: 108,109,110
ID`ы АЦТЕКОВ: 292,114,115,116
ID`ы КОПОВ: 265,266,280

L0ndl3m
08.07.2014, 20:48
В public OnPlayerRequestSpawn:


switch(GetPlayerSkin(playerid))
{
case 0, 105, 106, 269..271:
SetPlayerTeam(playerid, GROVE_TEAM_ID);
case 102..104:
SetPlayerTeam(playerid, BALLAS_TEAM_ID);
case 108..110:
SetPlayerTeam(playerid, VAGOS_TEAM_ID);
case 114..116, 292:
SetPlayerTeam(playerid, AZTECAS_TEAM_ID);
case 265, 266, 280:
SetPlayerTeam(playerid, COPS_TEAM_ID);
default:
SetPlayerTeam(playerid, NO_TEAM);
}

Где слова написанные большими буквами ( константы ) заменяйте на свои имена, которые вы указали в энумераторе ( enum ), создавая глобально эти константы.

maccoll
08.07.2014, 21:06
Это то я хоть правильно вписал?
http://s52.radikal.ru/i137/1407/0c/b67c4066d2f2.png

L0ndl3m
08.07.2014, 21:11
public OnPlayerRequestSpawn(playerid)
{
SetupPlayerForClassSelection(playerid);

switch(GetPlayerSkin(playerid))
{
case 0, 105, 106, 269..271:
SetPlayerTeam(playerid, GROVE_TEAM_ID);
case 102..104:
SetPlayerTeam(playerid, BALLAS_TEAM_ID);
case 108..110:
SetPlayerTeam(playerid, VAGOS_TEAM_ID);
case 114..116, 292:
SetPlayerTeam(playerid, AZTECAS_TEAM_ID);
case 265, 266, 280:
SetPlayerTeam(playerid, COPS_TEAM_ID);
default:
SetPlayerTeam(playerid, NO_TEAM);
}

return 1;
}

maccoll
08.07.2014, 21:15
error 017: undefined symbol "COPS_TEAM_ID"

L0ndl3m
08.07.2014, 21:20
Вверх мода добавьте ( после ключевых слов #include тогда что-ли ):


enum
{
GROVE_TEAM_ID = 1,
BALLAS_TEAM_ID,
VAGOS_TEAM_ID,
AZTECAS_TEAM_ID,
COPS_TEAM_ID
};

maccoll
08.07.2014, 21:37
Сделал как написали,только без #include
Ерроров нет,сейчас проверю,работает ли

- - - Добавлено - - -

Получилось,благодарю