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

Показ диалога другому игроку

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

ytka558

Здравствуйте, как сделать, чтобы когда вводишь команду /doc id диалоговое окно показывалось другому человеку ( которому id выбрал ) , а не тебе
 

CMD:doc(playerid, params[])
{
	if(sscanf(params, "u", params[0])) return SendClientMessage(playerid, COLOR_LIME, "• ??????????: {ffffff}/doc [?? ??????]");
	else if(!IsPlayerConnected(params[0])) return SendClientMessage(playerid, COLOR_DARKORANGE, PlayerIsNotOnline);
	else if(PlayerLogged[params[0]] == false) return SendClientMessage(playerid, COLOR_DARKORANGE, PlayerIsNotAuthorized);
	else if(!IsPlayerInRangeOfPlayer(8.0, playerid, params[0])) return SendClientMessage(playerid, COLOR_DARKORANGE, "?? ?????? ?? ??????");
	new sctring[1300], str[150];
	new string[128];
	format(string, sizeof(string), "?? ???????? ???? ????????????? %s[%d]", GetName(params[0]), params[0]);
	SendClientMessage(playerid, COLOR_YELLOW, string);
	SendMes(params[0], COLOR_BLUE, "????????? %s[%d] ??????? ??? ???? ?????????????.", GetName(playerid), playerid);
	if(PI[playerid][pSex] == 1) MeAction(playerid, "??????? ???? ????????????? %s", GetName(playerid));
	format(str,sizeof(str),"{ffffff}???:\t{0099FF}%s\n",GetName(playerid));
	strcat(sctring,str);
	if(PI[playerid][pMember] != 0) format(str,sizeof(str),"{ffffff}???????????:\t%s\n",Fraction_Name[PI[playerid][pMember]]);
	strcat(sctring,str);
	format(str,sizeof(str),"{ffffff}?????????:\t%s\n",Fraction_Rang[PI[playerid][pMember]][PI[playerid][pRank]]);
	strcat(sctring,str);
	ShowPlayerDialog(playerid, INVALID_DIALOG_ID, DIALOG_STYLE_MSGBOX, "{ffcc00}?????????????", sctring, "???????", "");
	return true;
}

Потом малость сам изменил команду, вместо playerid поставил params, но теперь когда вводишь команду, то сервер начинает перезагружаться 
 

CMD:doc(playerid, params[])
{
	if(sscanf(params, "u", params[0])) return SendClientMessage(playerid, COLOR_LIME, "• ??????????: {ffffff}/doc [?? ??????]");
	else if(!IsPlayerConnected(params[0])) return SendClientMessage(playerid, COLOR_DARKORANGE, PlayerIsNotOnline);
	else if(PlayerLogged[params[0]] == false) return SendClientMessage(playerid, COLOR_DARKORANGE, PlayerIsNotAuthorized);
	else if(!IsPlayerInRangeOfPlayer(8.0, playerid, params[0])) return SendClientMessage(playerid, COLOR_DARKORANGE, "?? ?????? ?? ??????");
	new sctring[1300], str[150];
	new string[128];
	format(string, sizeof(string), "?? ???????? ???? ????????????? %s[%d]", GetName(params[0]), params[0]);
	SendClientMessage(playerid, COLOR_YELLOW, string);
	SendMes(params[0], COLOR_BLUE, "????????? %s[%d] ??????? ??? ???? ?????????????.", GetName(playerid), playerid);
	if(PI[playerid][pSex] == 1) MeAction(playerid, "??????? ???? ????????????? %s", GetName(playerid));
	format(str,sizeof(str),"{ffffff}???:\t{0099FF}%s\n",GetName(playerid));
	strcat(sctring,str);
	if(PI[playerid][pMember] != 0) format(str,sizeof(str),"{ffffff}???????????:\t%s\n",Fraction_Name[PI[playerid][pMember]]);
	strcat(sctring,str);
	format(str,sizeof(str),"{ffffff}?????????:\t%s\n",Fraction_Rang[PI[playerid][pMember]][PI[playerid][pRank]]);
	strcat(sctring,str);
	ShowPlayerDialog(params[0], INVALID_DIALOG_ID, DIALOG_STYLE_MSGBOX, "{ffcc00}?????????????", sctring, "???????", "");
	return true;
}

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


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

ShowPlayerDialog (WIKI). Там же сказано, что второй аргумент - ID игрока, которому будете показывать диалог. Вот и заменяйте playerid на params[0].

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


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

, Я изменил playerid на params[0], но теперь когда вводишь команда /doc id, сервер вылетает ( перезагрузка ) 

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


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

Во-первых, выделяйте в Pawno текст на русском языке.
Во-вторых, поставьте crashdetect, и ключ -d3 в pawn.cfg, они выявят причину краша

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


Ссылка на сообщение
Поделиться на другие сайты
SCRIPTMAN
CMD:doc(playerid, params[])
{
	if(sscanf(params, "ud", params[0], params[1])) return SendClientMessage(playerid, COLOR_LIME, "• ??????????: {ffffff}/doc [?? ??????] [id]");
	else if(!IsPlayerConnected(params[0])) return SendClientMessage(playerid, COLOR_DARKORANGE, PlayerIsNotOnline);
	else if(PlayerLogged[params[0]] == false) return SendClientMessage(playerid, COLOR_DARKORANGE, PlayerIsNotAuthorized);
	else if(!IsPlayerInRangeOfPlayer(8.0, playerid, params[0])) return SendClientMessage(playerid, COLOR_DARKORANGE, "?? ?????? ?? ??????");
	new sctring[1300], str[150];
	new string[128];
	format(string, sizeof(string), "?? ???????? ???? ????????????? %s[%d]", GetName(params[0]), params[0]);
	SendClientMessage(playerid, COLOR_YELLOW, string);
	SendMes(params[0], COLOR_BLUE, "????????? %s[%d] ??????? ??? ???? ?????????????.", GetName(playerid), playerid);
	if(PI[playerid][pSex] == 1) MeAction(playerid, "??????? ???? ????????????? %s", GetName(playerid));
	format(str,sizeof(str),"{ffffff}???:\t{0099FF}%s\n",GetName(playerid));
	strcat(sctring,str);
	if(PI[playerid][pMember] != 0) format(str,sizeof(str),"{ffffff}???????????:\t%s\n",Fraction_Name[PI[playerid][pMember]]);
	strcat(sctring,str);
	format(str,sizeof(str),"{ffffff}?????????:\t%s\n",Fraction_Rang[PI[playerid][pMember]][PI[playerid][pRank]]);
	strcat(sctring,str);
	ShowPlayerDialog(params[1], INVALID_DIALOG_ID, DIALOG_STYLE_MSGBOX, "{ffcc00}?????????????", sctring, "???????", "");
	return true;
}

Зачем? У тебя там не ник, а текс хранится какой-то, поэту держи мою команду, теперь должно игроку, которого ты указал показывать. "?" заменишь на текст.

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


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

@ytka558,Хотя бы раскладку поменял при копировании. 

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


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

@SCRIPTMAN, Когда вводишь ид игрока, всё равно сервер крашит 

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


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

@ytka558,дай команду на русской раскладке. 

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


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

CMD:doc(playerid, params[])
{
if(sscanf(params, "u", params[0])) return SendClientMessage(playerid, COLOR_LIME, "Информация: {ffffff}/doc [id игрока]");
else if(!IsPlayerConnected(params[0])) return SendClientMessage(playerid, COLOR_DARKORANGE, PlayerIsNotOnline);
else if(PlayerLogged[params[0]] == false) return SendClientMessage(playerid, COLOR_DARKORANGE, PlayerIsNotAuthorized);
else if(!IsPlayerInRangeOfPlayer(8.0, playerid, params[0])) return SendClientMessage(playerid, COLOR_DARKORANGE, "Вы далеко от игрока");
new sctring[1300], str[150];
new string[128];
format(string, sizeof(string), "Вы показали своё удостоверение %s[%d]", GetName(params[0]));
SendClientMessage(playerid, COLOR_YELLOW, string);
SendMes(params[0], COLOR_BLUE, "Сотрудник %s[%d] показал Вам своё удостоверение.", GetName(playerid));
if(PI[playerid][pSex] == 1) MeAction(playerid, "показал своё удостоверение %s", GetName(playerid));
format(str,sizeof(str),"{ffffff}Имя:\t{0099FF}%s\n",GetName(playerid));
strcat(sctring,str);
if(PI[playerid][pMember] != 0) format(str,sizeof(str),"{ffffff}Организация:\t%s\n",Fraction_Name[PI[playerid][pMember]]);
strcat(sctring,str);
format(str,sizeof(str),"{ffffff}Должность:\t%s\n",Fraction_Rang[PI[playerid][pMember]][PI[playerid][pRank]]);
strcat(sctring,str);
ShowPlayerDialog(params[0], INVALID_DIALOG_ID, DIALOG_STYLE_MSGBOX, "{ffcc00}Удостоверение", sctring, "Закрыть", "");
return 1;
}

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


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

CMD:doc(playerid, params[])
{
if(sscanf(params, "i", params[0])) return SendClientMessage(playerid, COLOR_LIME, "Информация: {ffffff}/doc [id игрока]");
else if(!IsPlayerConnected(params[0])) return SendClientMessage(playerid, COLOR_DARKORANGE, PlayerIsNotOnline);
else if(PlayerLogged[params[0]] == false) return SendClientMessage(playerid, COLOR_DARKORANGE, PlayerIsNotAuthorized);
else if(!IsPlayerInRangeOfPlayer(8.0, playerid, params[0])) return SendClientMessage(playerid, COLOR_DARKORANGE, "Вы далеко от игрока");
new sctring[1300], str[150];
new string[128];
format(string, sizeof(string), "Вы показали своё удостоверение %s[%d]", GetName(params[0]));
SendClientMessage(playerid, COLOR_YELLOW, string);
SendMes(params[0], COLOR_BLUE, "Сотрудник %s[%d] показал Вам своё удостоверение.", GetName(playerid), playerid);
if(PI[playerid][pSex] == 1) MeAction(playerid, "показал своё удостоверение %s", GetName(params[0]));
format(str,sizeof(str),"{ffffff}Имя:\t{0099FF}%s\n",GetName(playerid));
strcat(sctring,str);
if(PI[playerid][pMember] != 0) format(str,sizeof(str),"{ffffff}Организация:\t%s\n",Fraction_Name[PI[playerid][pMember]]);
strcat(sctring,str);
format(str,sizeof(str),"{ffffff}Должность:\t%s\n",Fraction_Rang[PI[playerid][pMember]][PI[playerid][pRank]]);
strcat(sctring,str);
ShowPlayerDialog(params[0], DIALOG_STYLE_MSGBOX, "{ffcc00}Удостоверение", sctring, "Закрыть", "");
return 1;
}

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


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

Если в этой строчке не ставить тип, то там ошибка, а если поставить, то всё равно вылетает
 

	ShowPlayerDialog(params[0], DIALOG_STYLE_MSGBOX, "{ffcc00}Удостоверение", sctring, "Закрыть", "");

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


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

@ytka558,перепутал аргументы, это же ид диалога. Скинь мне все, что связано с "INVALID_DIALOG_ID", это наверное 0 ид.

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


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

Да, это 0 ид как и D_NULL
 

#define INVALID_DIALOG_ID               (34)


CMD:skill(playerid, params[])
{
	if(sscanf(params, "u", params[0])) return SendClientMessage(playerid, COLOR_LIME, "Информация: {ffffff}/skill [id игрока]");
	else if(!IsPlayerConnected(params[0])) return SendClientMessage(playerid, COLOR_GREY, PlayerIsNotOnline);
	else if(PlayerLogged[params[0]] == false) return SendClientMessage(playerid, COLOR_GREY, PlayerIsNotAuthorized);
	else if(!IsPlayerInRangeOfPlayer(8.0, playerid, params[0])) return SendClientMessage(playerid, COLOR_GREY, "Игрок слишком далеко!");
	else if(playerid == params[0]) return SendClientMessage(playerid, COLOR_LIME, "Информация: {ffffff}/myskill");

	if(params[0] == playerid)
	{
	    new fmt_dialog[200];

		format
		(
			fmt_dialog, sizeof fmt_dialog,
			"{ffffff}SDPistol:\t%d / 100%%\n\
			Deagle:\t\t%d / 100%%\n\
			ShotGun:\t%d / 100%%\n\
			MP5:\t\t%d / 100%%\n\
			AK-47:\t\t%d / 100%%\n\
			M4A1:\t\t%d / 100%",
			PI[playerid][pSkill],
			PI[playerid][pSkill][1],
			PI[playerid][pSkill][2],
			PI[playerid][pSkill][3],
			PI[playerid][pSkill][4],
			PI[playerid][pSkill][5]
		);

		ShowPlayerDialog
		(
			playerid, INVALID_DIALOG_ID, DIALOG_STYLE_MSGBOX,
			"{ffcc00}Навыки владения оружием",
			fmt_dialog,
			"Закрыть", ""
		);

	   MeAction(playerid, "просматривает свои навыки владения оружием");
	}
	return 1;
}

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


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

@ytka558,ясно. замени этот ID на свободный, не равный 0 и попробуй запусти. 

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


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

@SCRIPTMAN, всё равно сервер вылетает  

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


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

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

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

×

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

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