не работает (не отображается) пикап

w99zzl1

Участник
Автор темы
130
12
Привет. Пользуюсь павн относительно недавно, и уже столкнулся с проблемой. Делал всё в точности, как на одном видео:


C#:
new quest;

public OnGameModeInit()
{
    // дохуя code ...
    quest = CreatePickup(1272, 2, 160,1773.4998,-1896.1906);
    // ещё много кода
    return 1
}

public OnPlayerPickUpPickup(playerid, pickupid)
{
    if(pickupid == quest)
    {
        SCM(playerid, 0xF0F0F0F0, "Приветствую в нашей стране!");
        SetPlayerScore(playerid, GetPlayerScore(playerid) + 1);
    }
// ... code ...
    return 1;
}
В целом, всё правильно, при компиляции никаких ошибок и варнингов нет, но пикап, почему то, не отображается вообще (он должен быть на ЖДЛС, юзнул координаты с /save
Помогите пожалуйста, почему пикап не отображается?
 
Решение
savedpositions.txt:
AddPlayerClass(115,1603.0399,1449.6946,33.5302,90.3917,0,0,0,0,0,0);
115 - ID скина на тебе
1603.0399 - Координата X
1449.6946 - Координата Y
33.5302 - Координата Z
90.3917 - Угол поворота
Остальные нули я не знаю, за что отвечают. Там, два из них - ID интерьера и виртуального мира, но это не точно.
AddPlayerClass(Skin, x, y, z, angle,0,0,0,0,0,0); - как-то так.
Видимо, "160" в твоём коде - это был твой скин, а не координата X.

Команды для телепорта:
В Pawn (Нужно подключить Pawn.CMD и sscanf)
C++:
CMD:tpcor(playerid, params[]) // /tpcor [X] [Y] [Z] [Interior] [Virtual World]
{
    new
        Float: pos_x,
        Float: pos_y,
        Float: pos_z,
        interior,
        virtualworld...

Dmitriy Makarov

25.05.2021
Проверенный
2,508
1,136
Немного не на ЖДЛС.)
1740001270995.png

1740001326186.png
 
  • Влюблен
Реакции: w99zzl1

w99zzl1

Участник
Автор темы
130
12
пииииздеец... но это всё мне выдала команда /save в файле saveposition.txt. Видимо, оно работает некорректно.... Можешь пожалуйста подсказать, как можно нормально получить координаты? А ещё, телепорт по ним бы) Или это любой ЛУА в открытом доступе справится?

Итог: /save почему то выдавал неправильные координаты, из за чего, пикап появлялся не там, где это задумано, и я думал, что он по просту не работает.

Решение: использовать другой способ получения координат. Лучший для меня стал код на pawn:


C:
CMD:coords(playerid, params[])
{
    new Float:x, Float:y, Float:z;
    GetPlayerPos(playerid, x, y, z);
    printf("Точные координаты: %.6f, %.6f, %.6f", x, y, z);
    
    new str[128];
    format(str, sizeof(str), "Ваши координаты: %.6f, %.6f, %.6f", x, y, z);
    SendClientMessage(playerid, 0xFFFFFFFF, str);
    return 1;
}

Введя полученные координаты, пикап работает. Я хз почему...
 
Последнее редактирование:

Dmitriy Makarov

25.05.2021
Проверенный
2,508
1,136
savedpositions.txt:
AddPlayerClass(115,1603.0399,1449.6946,33.5302,90.3917,0,0,0,0,0,0);
115 - ID скина на тебе
1603.0399 - Координата X
1449.6946 - Координата Y
33.5302 - Координата Z
90.3917 - Угол поворота
Остальные нули я не знаю, за что отвечают. Там, два из них - ID интерьера и виртуального мира, но это не точно.
AddPlayerClass(Skin, x, y, z, angle,0,0,0,0,0,0); - как-то так.
Видимо, "160" в твоём коде - это был твой скин, а не координата X.

Команды для телепорта:
В Pawn (Нужно подключить Pawn.CMD и sscanf)
C++:
CMD:tpcor(playerid, params[]) // /tpcor [X] [Y] [Z] [Interior] [Virtual World]
{
    new
        Float: pos_x,
        Float: pos_y,
        Float: pos_z,
        interior,
        virtualworld;
  
    if(sscanf(params, "p<,>fffdd", pos_x, pos_y, pos_z, interior, virtualworld))
        return SendClientMessage(playerid, -1, "Используй: /tpcor [Координата X] [Координата Y] [Координата Z] [ID интерьера] [ID вирт. мира]");

    SetPlayerPos(playerid, pos_x, pos_y, pos_z);
    SetPlayerInterior(playerid, interior);
    SetPlayerVirtualWorld(playerid, virtualworld);
    GameTextForPlayer(playerid, "~b~~h~TELEPORTED", 1000, 3);
    return 1;
}

Lua:
Lua:
function main()
    while not isSampAvailable() do wait(100) end
    sampRegisterChatCommand("tpcor", function(coordinates) -- /tpcor [X] [Y] [Z]
        local x, y, z = coordinates:match("(.+) (.+) (.+)")
        if x and y and z then
            setCharCoordinates(1, x, y, z)
        end
    end)
    wait(-1)
end