KeTcHuP
Дебютант
Вообщем, у меня есть сис-ма дуэлей на командах, вот код:
Я бы хотел перевести эти команды в диалоговое окно, а точнее чтобы игроку, которого вызвали на дуэль приходило сообщение не в чат, что его вызывают, а в виде диалогового окна. Например: %d Вызывает вас на дуэль с оружием %s и патронами %s и 2 кнопки (принять и отказаться). Просто в виде команд не очень удобно. Возможно ли сделать это? И если возможно то как?
PHP:
if(strcmp(cmd,"/joinduel",true) == 0)
{
GetPlayerName(playerid, sendername, sizeof(sendername)); tmp = strtok(cmdtext, idx);
if(BbI3oB[playerid] == 1){
SendClientMessage(playerid, RED, "Вы уже приглашали на дуэль или были приглашенны!");return 1;}
if(!strlen(tmp)){
SendClientMessage(playerid, COLOR_RED,"Вводите /joinduel [id игрока] [id оружия] [патроны]");
return 1;}
giveplayerid = strval(tmp);
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)){
SendClientMessage(playerid, COLOR_RED,"Вводите /joinduel [id игрока] [id оружия] [патроны]");
return 1;}
if(giveplayerid == playerid){
SendClientMessage(playerid, COLOR_RED, "Вы не можете приглашать на дуэль самого себя!");return 1;}
weapons = strval(tmp);
if(weapons < 0 || weapons > 42 || weapons == 19 || weapons == 20 || weapons == 21 || weapons == 35 || weapons == 36 || weapons == 37 || weapons == 38){
SendClientMessage(playerid, COLOR_RED, "Оружие запрещенно! Рекомендуем: (24 - Deagle, 25 - ShoutGun, 30 - AK47, 31 - M4)");return 1;}
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)){
ammo = 100000;} ammo = strval(tmp);
if(ammo < 0 || ammo > 100000){
SendClientMessage(playerid, COLOR_RED, "Кол-во патронов должно составлять от 0 до 100000!");return 1;}
if(IsPlayerConnected(giveplayerid)){
if(duelstart == 0){
GetPlayerName(playerid, sendername, sizeof(sendername));
new weaponname[20];
GetWeaponName(weapons, weaponname, sizeof(weaponname));
GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
format(string,sizeof(string)," Вы вызвали игрока %s на дуэль",giveplayer); SendClientMessage(playerid, PINK, string);
format(string,sizeof(string)," Оружие \"%s\" с %d патронами", weaponname,ammo); SendClientMessage(playerid, PINK, string);
format(string,sizeof(string)," %s(%i) вызывает Вас на дуэль! Оружие \"%s\" с %d патронами",sendername,playerid, weaponname,ammo); SendClientMessage(giveplayerid, COLOR_PINK, string);
format(string,sizeof(string)," Принять дуэль: /accept, отказаться: /decline");
BbI3oB[playerid] = 1; BbI3oB[giveplayerid] = 1; SendClientMessage(giveplayerid, COLOR_PINK, string);
nad = SetTimer("NoAnDuel", 30000, 0);
}else{
SendClientMessage(playerid, ORANGE, " Подождите окончания текущей дуэли");
}}else{
format(string, sizeof(string), "Указанного ID %d нет на сервере. Проверьте правильность id", giveplayerid);SendClientMessage(playerid, COLOR_RED, string);}
return 1;
}
if(strcmp(cmd,"/accept",true) == 0)
{
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)){
SendClientMessage(playerid, ORANGE, "Введите /accept [id игрока]");
return 1;}
giveplayerid = strval(tmp);
GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer)); GetPlayerName(playerid, sendername, sizeof(sendername));
if(IsPlayerConnected(giveplayerid) && giveplayerid != playerid){
if(BbI3oB[playerid] == 1 && BbI3oB[giveplayerid] == 1){
if(duelstart == 0){
KillTimer(nad);
new string2[256], weaponname[20];
GetWeaponName(weapons, weaponname, sizeof(weaponname));
format(string, sizeof(string), "*Вы приняли дуэль от %s! Если Вы желаете его прекратить, введите /endduel.",giveplayer);SendClientMessage(playerid,GREEN, string);
format(string, sizeof(string), "%s принял(а) дуэль! Если Вы желаете его прекратить, введите /endduel. ",sendername);SendClientMessage(giveplayerid,GREEN, string);
format(string2, sizeof(string2), "Дуэль между %s и %s начат! (Оружие: %s | Патроны: %d) ", giveplayer, sendername, weaponname, ammo);SendClientMessageToAll(COLOR_SEAGREEN, string2);
SetPlayerHealth(playerid, 100); SetPlayerHealth(giveplayerid, 100);
SetPlayerArmour(playerid, 100); SetPlayerArmour(giveplayerid, 100);
SetPlayerPos(playerid,1483.5879,-1180.4043,108.3622); SetPlayerPos(giveplayerid,1482.8530,-1223.2703,108.3314);
SetPlayerFacingAngle(playerid, 171.9301); SetPlayerFacingAngle(giveplayerid, 0.5208);
ResetPlayerWeapons(playerid); ResetPlayerWeapons(giveplayerid);
GivePlayerWeapon(playerid,weapons, ammo/2); GivePlayerWeapon(giveplayerid,weapons, ammo/2);
duelstart = 1;
}else{
SendClientMessage(playerid, ORANGE, " Дождитесь окончания текущей дуэли!");
}}else{
format(string, sizeof(string), " Вы не получали приглашение на дуэль от %s.", giveplayer);SendClientMessage(playerid, COLOR_RED, string);
}}else{
format(string, sizeof(string), "ID %d нет на сервере или это вы!", giveplayerid);SendClientMessage(playerid, COLOR_RED, string);}
return 1;
}
if(strcmp(cmd,"/decline",true) == 0)
{
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)){SendClientMessage(playerid, COLOR_RED, "Введите /decline [id игрока]");return 1;}
giveplayerid = strval(tmp);
GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer)); GetPlayerName(playerid, sendername, sizeof(sendername));
if(IsPlayerConnected(giveplayerid)){
if(BbI3oB[playerid] == 1 && BbI3oB[giveplayerid] == 1){
BbI3oB[playerid] = 0; BbI3oB[giveplayerid] = 0;
format(string, sizeof(string), "*Вы отказались от дуэли с %s",giveplayer);SendClientMessage(playerid,ORANGE, string);
format(string, sizeof(string), "%s отказался от дуэли",sendername);SendClientMessage(giveplayerid,ORANGE, string);
KillTimer(nad);
}else{
format(string, sizeof(string), "*%s вас не вызывал",giveplayer);SendClientMessage(playerid,ORANGE, string);
}}else{
format(string, sizeof(string), "ID %d нет на сервере. Проверьте правильность id", giveplayerid);SendClientMessage(playerid, COLOR_RED, string);}
return 1;
}
Последнее редактирование:
