хелп с метками rak samp lite

meepi

Участник
Автор темы
73
28
Версия SA-MP
  1. Другая
ку всем, кароч не нашел темы и сам не оч понимаю, вообщем мне нужно чтоб при появлении метки (любой) бот сетал координаты на нее (setBotPosition(x, y, z))
Пытался сделать чет подобное но безуспешно
 

meepi

Участник
Автор темы
73
28
Lua:
local sampev = require('samp.events')

function sampev.onSetCheckpoint(position, radius)
    setBotPosition(position.x, position.y, position.z)
end

function sampev.onSetRaceCheckpoint(type, position, nextPosition, size)
    setBotPosition(position.x, position.y, position.z)
end
Так пробовал?
Пробывал, вот краш

2:44:21] [LUA] ...rizo\OneDrive\Рабочий стол\pizdec\scripts\libs\addon.lua:176: ...Drive\Рабочий стол\pizdec\scripts\strahovaya_project.lua:139: attempt to call global 'onSetCheckpoint' (a nil value)
stack traceback:
[C]: in function 'error'
...rizo\OneDrive\Рабочий стол\pizdec\scripts\libs\addon.lua:160: in function 'tick'
...rizo\OneDrive\Рабочий стол\pizdec\scripts\libs\addon.lua:176: in function <...rizo\OneDrive\Рабочий стол\pizdec\scripts\libs\addon.lua:174>
 

Maxim25012

Известный
280
102
Пробывал, вот краш

2:44:21] [LUA] ...rizo\OneDrive\Рабочий стол\pizdec\scripts\libs\addon.lua:176: ...Drive\Рабочий стол\pizdec\scripts\strahovaya_project.lua:139: attempt to call global 'onSetCheckpoint' (a nil value)
stack traceback:
[C]: in function 'error'
...rizo\OneDrive\Рабочий стол\pizdec\scripts\libs\addon.lua:160: in function 'tick'
...rizo\OneDrive\Рабочий стол\pizdec\scripts\libs\addon.lua:176: in function <...rizo\OneDrive\Рабочий стол\pizdec\scripts\libs\addon.lua:174>
Так это – события, они сами собой вызываются. Ты явно что-то не так сделал. Запиши так, как это сделал я, а чтобы бот не телепортировался всегда, а только тогда, когда это нужно, просто сделай переменную и её проверку внутри события.
 

meepi

Участник
Автор темы
73
28
Так это – события, они сами собой вызываются. Ты явно что-то не так сделал. Запиши так, как это сделал я, а чтобы бот не телепортировался всегда, а только тогда, когда это нужно, просто сделай переменную и её проверку внутри события.
Можно подробней?
 

Fluffy1560

Активный
276
34
Пробывал, вот краш

2:44:21] [LUA] ...rizo\OneDrive\Рабочий стол\pizdec\scripts\libs\addon.lua:176: ...Drive\Рабочий стол\pizdec\scripts\strahovaya_project.lua:139: attempt to call global 'onSetCheckpoint' (a nil value)
stack traceback:
[C]: in function 'error'
...rizo\OneDrive\Рабочий стол\pizdec\scripts\libs\addon.lua:160: in function 'tick'
...rizo\OneDrive\Рабочий стол\pizdec\scripts\libs\addon.lua:176: in function <...rizo\OneDrive\Рабочий стол\pizdec\scripts\libs\addon.lua:174>
У тебя samp events подключен?
 

Maxim25012

Известный
280
102
Можно подробней?
Ну, есть библиотека SAMP.lua, она, насколько я знаю, адаптирована под RakSAMP Lite. Она позволяет без лишнего запаривания перехватывать данные, получаемые и отправляющиеся клиентом. Допустим, ты её загружаешь в переменную "sampev":
Lua:
local sampev = require('samp.events')
На отправку и получение почти каждого пакета и RPC у этой библиотеки есть свои события. Этим событиям ты задаёшь свои функции, которые должны находиться внутри этой переменной (sampev – таблица), например:
Lua:
function sampev.onSetCheckpoint(position, radius)
    -- код
end

function sampev.onSetRaceCheckpoint(type, position, nextPosition, size)
    -- код
end
Каждая из этих двух функций в примере будет самостоятельно вызываться библиотекой каждый раз, когда появляется метка. Первая будет вызываться тогда, когда появляется маленькая метка, а вторая – когда большая и высокая. Вот тебе нужно, чтобы бот телепортировался на метку, значит внутри этих функций нужно вызвать функцию для установки позиции бота:
Lua:
function sampev.onSetCheckpoint(position, radius)
    setBotPosition(position.x, position.y, position.z)
end

function sampev.onSetRaceCheckpoint(type, position, nextPosition, size)
    setBotPosition(position.x, position.y, position.z)
end
А если тебе нужно, чтобы бот так делал только в определённых условиях, то нужно сделать простую переменную (например teleport), у которой может быть два значения – истина или ложь. Когда нужно, чтобы бот телепортировался, она должна быть равна true, а когда нет – false. Её ты будешь менять где-то у себя в коде. Теперь остаётся только проверять значение этой переменной внутри функций событий, чтобы телепортация происходила только тогда, когда эта переменная равна истине:
Lua:
function sampev.onSetCheckpoint(position, radius)
    if teleport then
        setBotPosition(position.x, position.y, position.z)
    end
end

function sampev.onSetRaceCheckpoint(type, position, nextPosition, size)
    if teleport then
        setBotPosition(position.x, position.y, position.z)
    end
end
Вот и всё.
 

meepi

Участник
Автор темы
73
28
У тебя samp events подключен?
кнш

Ну, есть библиотека SAMP.lua, она, насколько я знаю, адаптирована под RakSAMP Lite. Она позволяет без лишнего запаривания перехватывать данные, получаемые и отправляющиеся клиентом. Допустим, ты её загружаешь в переменную "sampev":
Lua:
local sampev = require('samp.events')
На отправку и получение почти каждого пакета и RPC у этой библиотеки есть свои события. Этим событиям ты задаёшь свои функции, которые должны находиться внутри этой переменной (sampev – таблица), например:
Lua:
function sampev.onSetCheckpoint(position, radius)
    -- код
end

function sampev.onSetRaceCheckpoint(type, position, nextPosition, size)
    -- код
end
Каждая из этих двух функций в примере будет самостоятельно вызываться библиотекой каждый раз, когда появляется метка. Первая будет вызываться тогда, когда появляется маленькая метка, а вторая – когда большая и высокая. Вот тебе нужно, чтобы бот телепортировался на метку, значит внутри этих функций нужно вызвать функцию для установки позиции бота:
Lua:
function sampev.onSetCheckpoint(position, radius)
    setBotPosition(position.x, position.y, position.z)
end

function sampev.onSetRaceCheckpoint(type, position, nextPosition, size)
    setBotPosition(position.x, position.y, position.z)
end
А если тебе нужно, чтобы бот так делал только в определённых условиях, то нужно сделать простую переменную (например teleport), у которой может быть два значения – истина или ложь. Когда нужно, чтобы бот телепортировался, она должна быть равна true, а когда нет – false. Её ты будешь менять где-то у себя в коде. Теперь остаётся только проверять значение этой переменной внутри функций событий, чтобы телепортация происходила только тогда, когда эта переменная равна истине:
Lua:
function sampev.onSetCheckpoint(position, radius)
    if teleport then
        setBotPosition(position.x, position.y, position.z)
    end
end

function sampev.onSetRaceCheckpoint(type, position, nextPosition, size)
    if teleport then
        setBotPosition(position.x, position.y, position.z)
    end
end
Вот и всё.



1713962575046.png




Создал полностью нью скрипт, вот крашит

[15:43:25] [LUA] ...Drive\Рабочий стол\pizdec\scripts\strahovaya_project.lua:139: attempt to call global 'onSetCheckpoint' (a nil value)
stack traceback:
[C]: in function 'error'
...rizo\OneDrive\Рабочий стол\pizdec\scripts\libs\addon.lua:153: in function <...rizo\OneDrive\Рабочий стол\pizdec\scripts\libs\addon.lua:145>

Библиотеки стоят все (мой скрипт который тоже есть в папке работает, хотя там не одна сотня строк)
 
Последнее редактирование:

Maxim25012

Известный
280
102
кнш





Посмотреть вложение 238223



Создал полностью нью скрипт, вот крашит

[15:43:25] [LUA] ...Drive\Рабочий стол\pizdec\scripts\strahovaya_project.lua:139: attempt to call global 'onSetCheckpoint' (a nil value)
stack traceback:
[C]: in function 'error'
...rizo\OneDrive\Рабочий стол\pizdec\scripts\libs\addon.lua:153: in function <...rizo\OneDrive\Рабочий стол\pizdec\scripts\libs\addon.lua:145>

Библиотеки стоят все (мой скрипт который тоже есть в папке работает, хотя там не одна сотня строк)
Крашит на 139 строке в новом скрипте на девять строк?