Добро пожаловать!

Зарегистрировавшись у нас, вы сможете обсуждать, делиться и отправлять личные сообщения другим участникам нашего сообщества.

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

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

    pID = params[0];

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

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

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

    pID = params[0];

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

после того, как ты поместил айди в глобальную переменную, ты сможешь использовать айди в функционале диалога.
А вот если одновременно 2 игрока введут эту кмд там же по идеи перепутаются значения или не?
 
𝚖𝚎𝚖𝚎𝚗𝚝𝚘 𝚖𝚘𝚛𝚒.
Команда форума
Администратор
Регистрация
13 Мар 2022
Сообщения
1,070
@арбузик, всё верно. В таком случае разумнее будет применять временные переменные, они же 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");

    //далее уже ваш код
}
 
Пользователь
Регистрация
26 Мар 2024
Сообщения
36
@арбузик, всё верно. В таком случае разумнее будет применять временные переменные, они же 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
Активный
Регистрация
26 Сен 2023
Сообщения
383
Не мне нужно чтобы диалог показывался именно тому кто кинул это получается нужно сохранять id того кому кинули?
что бы диалог показывался тому, кто кинул, необходимо указать playerid в ShowPlayerDialog.

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

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