Welcome!

By registering with us, you'll be able to discuss, share and private message with other members of our community.

SignUp Now!

Вопрос по диалогам

Мар
36
2
Пользователь
Здравствуйте, есть вопросы мне нужно чтобы в диалоговом окне писался ник игрока или любой другой текст(именно из переменной) или числа из переменной кто знает подскажите пожалуйста как сделать. И ещё один вопрос как передать id другого игрока в диалоге то есть не того кому этот диалог открывается а допустим команда /invite есть вводишь id и открывается окно с выбором куда пригласить ты выбираешь и инвайтишь этого игрока когда я прописываю что должно произойти при выборе пункта мне нужно указывать на id того игрока но я не могу понять откуда мне его взять подскажите как сделать.🥺
 
pawn love
Сен
414
113
Активный
Pawn:
// ко всем глобальным new
new pID;

CMD:invite(playerid, params)
{
    if(sscanf(params, "i", params[0])) return SendClientMessage(playerid, -1, "Используйте: /invite [id]");

    pID = params[0];

// далее показ диалога
}

после того, как ты поместил айди в глобальную переменную, ты сможешь использовать айди в функционале диалога.
 
Мар
36
2
Пользователь
Pawn:
// ко всем глобальным new
new pID;

CMD:invite(playerid, params)
{
    if(sscanf(params, "i", params[0])) return SendClientMessage(playerid, -1, "Используйте: /invite [id]");

    pID = params[0];

// далее показ диалога
}

после того, как ты поместил айди в глобальную переменную, ты сможешь использовать айди в функционале диалога.
А вот если одновременно 2 игрока введут эту кмд там же по идеи перепутаются значения или не?
 
𝚖𝚎𝚖𝚎𝚗𝚝𝚘 𝚖𝚘𝚛𝚒.
Мар
1,138
11,741
Команда форума
Администратор
@арбузик, всё верно. В таком случае разумнее будет применять временные переменные, они же pvar'ы.


Pawn:
CMD:invite(playerid, params)
{
    if(sscanf(params, "u", params[0])) return SendClientMessage(playerid, -1, "Используйте: /invite [id]");

    SetPVarInt(params[0], "invite_playerid", playerid);

    // далее показ диалога
}


Объясняю, почему во временную переменную сохраняем именно ID игрока, который ввел команду.
Диалог будет показываться игроку, которому кинули инвайт во фракцию. Дабы узнать, в какую фракцию и от кого предложение - в коде диалога используем примерный код:

Pawn:
case DIALOG_INVITE: {
    new invite_id = GetPVarInt(playerid, "invite_playerid");

    //далее уже ваш код
}
 
Мар
36
2
Пользователь
@арбузик, всё верно. В таком случае разумнее будет применять временные переменные, они же pvar'ы.


Pawn:
CMD:invite(playerid, params)
{
    if(sscanf(params, "u", params[0])) return SendClientMessage(playerid, -1, "Используйте: /invite [id]");

    SetPVarInt(params[0], "invite_playerid", playerid);

    // далее показ диалога
}


Объясняю, почему во временную переменную сохраняем именно ID игрока, который ввел команду.
Диалог будет показываться игроку, которому кинули инвайт во фракцию. Дабы узнать, в какую фракцию и от кого предложение - в коде диалога используем примерный код:

Pawn:
case DIALOG_INVITE: {
    new invite_id = GetPVarInt(playerid, "invite_playerid");

    //далее уже ваш код
}
Не мне нужно чтобы диалог показывался именно тому кто кинул это получается нужно сохранять id того кому кинули?
 
pawn love
Сен
414
113
Активный
Не мне нужно чтобы диалог показывался именно тому кто кинул это получается нужно сохранять id того кому кинули?
что бы диалог показывался тому, кто кинул, необходимо указать playerid в ShowPlayerDialog.

тобишь так:
Pawn:
ShowPlayerDialog(playerid, id_dialog, style_dialog, "", "", "", "");

// id_dialog – айди диалога
// style_dialog – стиль диалога
 
Сверху