Перейти к содержанию
Авторизация  
Vladimir_Kulkov

Диалоги для всех(госов)

Рекомендуемые сообщения

Vladimir_Kulkov

Всем привет!

Назрел вопрос:

Как сделать если игрок вызывает например механика то, всем механикам выходил диалог, что "такой-то,такой-то, вызывает механиков, и где он находиться,(в метрах от него)" когда механик принимает вызов то у него на карте помечается где он находиться. Так же для всех госов..

Видел подобную штуку на CRMP RP

Изменено пользователем depula2

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Rustyk

Используй цикл.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Vladimir_Kulkov

@Rusty'k, пример можно?

хотя бы один а для других я сам сделаю..

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
vsergeenko

Не рекомендую использовать диалоги в таком случае. Лучше, как например на самповском Advance RP - в чате сообщается о вызове, и какой нибудь командой с id игрока можно принять этот вызов. Как Вам уже ответили выше, используйте цикл:

for(new i = 0; i < MAX_PLAYERS; i++)
{
    if(IsPlayerConnected(i))
    {
        if(/* проверка на работу */)
        {
            // формат диалога/сообщения
        }
    }
}

Можете приступать).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Vladimir_Kulkov

, а в метрах как?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Max_Eitzen

Перед циклом

new Float:xPos, Float:yPos, Float:zPos, Float:range = 5.0;
GetPlayerPos(playerid, xPos, yPos, zPos);

после проверки на работу

if(!IsPlayerInRangeOfPoint(i, range, xPos, yPos, zPos)) continue; 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Vladimir_Kulkov

Понял так?! Правильно?
P.s. с телефона кода нету

new Float:xPos, Float:yPos, Float:zPos, Float:range = 5.0;
GetPlayerPos(playerid, xPos, yPos, zPos);
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if(/* проверка на работу */)
{
if(!IsPlayerInRangeOfPoint(i, range, xPos, yPos, zPos)) continue;
}
}
}
Изменено пользователем Smolin
Заключил в код

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Max_Eitzen

Да, все верно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Vladimir_Kulkov

@Max_Eitzen, так-с, все это я сделал, теперь нужно делать диалоговое окно? с принятием и отказом, + текстдрайв таймера на 300 сек

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Vladimir_Kulkov

Вот сделал команду а так же и диалог к ней

if (strcmp("/call", cmdtext, true, 10) == 0)
{
		new number, call[64];
		tmp = strtok(cmdtext, idx);
		if(PlayerInfo[playerid][pJailed] > 0) return SendClientMessage(playerid, COLOR_GREY, "У вас отобрали телефон, ждите окончание срока");
		if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_WHITE, "[Подсказка]: /call");
		number = strval(tmp);
		ShowPlayerDialog(playerid,20666,DIALOG_STYLE_LIST,"Список номеров спасение","Полиция\nТакси\nМеханики\nСкорая Помощь","Выбор", "Отмена");
		return 1;
	}

диалог

if(dialogid == 20666)
		{
		switch(listitem)
		{
		case 1: //Если был выбран 1 пункт списка
		{
		//что тут нужно??? чтобы выводил тем кому звонишь
		}
		case 2: //Если был выбран 2 пункт списка
		{
		//что тут нужно??? чтобы выводил тем кому звонишь
		}
		case 3: //Если был выбран 3 пункт списка
		{
		//что тут нужно??? чтобы выводил тем кому звонишь
		}
		case 4: //Если был выбран 4 пункт списка
		{
		//что тут нужно??? чтобы выводил тем кому звонишь
		}
		}
		}
		return 1;
		}
Изменено пользователем depula2

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Vladimir_Kulkov

подниму

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Max_Eitzen

Хотите, чтобы для Вас все сделали?

в диалоге по циклу отправляйте сообщение всем.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Vladimir_Kulkov

@Max_Eitzen, Суть вопроса в том, что я сделал диалог, мне нужно чтобы ввел команду /call ему вышел диалог(его сделал) потом он нажимает например "Полиция" или же "Механики" потом выходит еще один диалог но выходит он механику, или другим лицам которые в диалоге вписаны. и он должен либо принять вызов, либо отказать!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Max_Eitzen
for(new i = 0; i < MAX_PLAYERS; i++)//Рекомендуется использовать циклы foreach
{
    if(PlayerInfo[i][pJob] != 5) continue;//Проверка на работу механика
    //Показывайте диалог
}

Вот и все.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Гость
Эта тема закрыта для публикации ответов.
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

Мы разместили cookie-файлы на ваше устройство, чтобы помочь сделать этот сайт лучше. Вы можете изменить свои настройки cookie-файлов, или продолжить без изменения настроек.