Активный
- Тема Автор
- #1
Идея и назначение
Игрок может вызвать другого на дуэль 1 на 1 в отдельной зоне.
Подходит для DM серверов и честных поединков.
Суть реализации
1. Храним, кто кого вызвал на дуэль.
2. Команда /duel отправляет вызов, /accept принимает.
3. При принятии телепортируем обоих в дуэльную зону и выдаем оружие.
Реализация
Дополнительные идеи
1. Считать победы и поражения в дуэлях.
2. Делать ставки на дуэль.
3. Добавить разные арены и режимы оружия.
Игрок может вызвать другого на дуэль 1 на 1 в отдельной зоне.
Подходит для DM серверов и честных поединков.
Суть реализации
1. Храним, кто кого вызвал на дуэль.
2. Команда /duel отправляет вызов, /accept принимает.
3. При принятии телепортируем обоих в дуэльную зону и выдаем оружие.
Реализация
Код:
new DuelRequestFrom[MAX_PLAYERS] = {INVALID_PLAYER_ID, ...};
CMD:duel(playerid, params[])
{
new target;
if(sscanf(params, "u", target))
return SendClientMessage(playerid, -1, "Используй: /duel [id].");
if(!IsPlayerConnected(target))
return SendClientMessage(playerid, -1, "Игрок не найден.");
if(target == playerid)
return SendClientMessage(playerid, -1, "Нельзя вызвать на дуэль себя.");
DuelRequestFrom[target] = playerid;
SendClientMessage(playerid, -1, "Вызов на дуэль отправлен.");
SendClientMessage(target, -1, "Тебя вызвали на дуэль, используй /accept.");
return 1;
}
CMD:accept(playerid)
{
new from = DuelRequestFrom[playerid];
if(from == INVALID_PLAYER_ID || !IsPlayerConnected(from))
return SendClientMessage(playerid, -1, "Нет активного вызова на дуэль.");
DuelRequestFrom[playerid] = INVALID_PLAYER_ID;
SetPlayerPos(from, 1000.0, 1000.0, 10.0);
SetPlayerPos(playerid, 1005.0, 1000.0, 10.0);
ResetPlayerWeapons(from);
ResetPlayerWeapons(playerid);
GivePlayerWeapon(from, 24, 200);
GivePlayerWeapon(playerid, 24, 200);
SendClientMessage(from, -1, "Дуэль началась.");
SendClientMessage(playerid, -1, "Дуэль началась.");
return 1;
}
Дополнительные идеи
1. Считать победы и поражения в дуэлях.
2. Делать ставки на дуэль.
3. Добавить разные арены и режимы оружия.