03.07.2012, 12:45
Всем привет, вот такая у меня проблема с дуэлью - вызываю игрока на дуэль /duel ID. У него появляется диалог с подтверждением и отклонением дуэли, когда игрок жмет "принять" то меня не телепортирует на дуэль, а его телепортирует и в чате пишет, что как будто он сам себя на дуэль вызвал. Помогите исправить пожалуйста.
Команда вызова игрока на дуэль:
Диалог подтверждения и отклонения:
Команда вызова игрока на дуэль:
pawn Код:
COMMAND:duel(playerid,params[])
{
if(params[0] == '\0' || !IsNumeric(params))return SendUsage(playerid, "/duel [playerid]");
if(g_HasInvitedToDuel[playerid] == 1)return SendError(playerid, "Вы уже пригласили кого-то на дуэль! Используйте /cduel, чтобы отменить приглашение.");
new DuelID = strvalEx(params),pName[MAX_PLAYER_NAME],zName[MAX_PLAYER_NAME],
tString[128];GetPlayerName(playerid, pName, MAX_PLAYER_NAME);GetPlayerName(DuelID, zName, MAX_PLAYER_NAME);
if (!IsPlayerConnected(DuelID))return SendError(playerid, "Игрок отключен.");
if(g_HasInvitedToDuel[DuelID] == 1)return SendError(playerid, "Этот игрок уже приглашен на дуэль!");
if(DuelID == playerid)return SendError(playerid, "Вы не можете вызвать самого себя на дуэль");
format(tString, sizeof(tString), "Вы пригласили игрока %s(ID:%d) на честный поединок, подождите пока игрок примет решение.",zName, DuelID, zName);
SendClientMessage(playerid, COLOR_YELLOW, tString);
format(tString,sizeof tString,"Вас вызывает %s(%i) на Дуэль\nВы согласны?",pName, playerid);
ShowPlayerDialog(DuelID,AccDuel,DIALOG_STYLE_MSGBOX,"Вызов на дуэль:",tString,"Принять","Отклонить");
g_GotInvitedToDuel[DuelID] = playerid;
g_HasInvitedToDuel[playerid] = 1;
return 1;
}
pawn Код:
if(dialogid == AccDuel)
{
if(response)
{
new DuelID,pName[MAX_PLAYER_NAME],zName[MAX_PLAYER_NAME],tString[128];
GetPlayerName(playerid, pName, MAX_PLAYER_NAME);
GetPlayerName(DuelID, zName, MAX_PLAYER_NAME);
format(tString, sizeof(tString), "Вы приняли вызов игрока %s(ID:%d).",zName,DuelID);
SendClientMessage(playerid, COLOR_YELLOW, tString);
format(tString, sizeof(tString), "Игрок %s(ID:%d), принял вызов.",pName,playerid);
SendClientMessage(DuelID, COLOR_YELLOW, tString);
format(tString, sizeof(tString), "Честный поединок между игроками %s и %s начинается.",pName,zName);
SendClientMessageToAll(COLOR_ORANGE, tString);
InitializeDuel(playerid);
InitializeDuelEx( DuelID);
g_IsPlayerDueling[playerid] = 1;
g_IsPlayerDueling[DuelID] = 1;
g_DuelingID1 = playerid;
g_DuelingID2 = DuelID;
g_DuelInProgress = 1;
}else{
if(g_HasInvitedToDuel[playerid] == 0)
g_HasInvitedToDuel[playerid] = 0;
}
return 1;
}