Skip to content

Commit 203763a

Browse files
committed
add debug scripts
Добавил скрипт для тестирования SA-MP API
1 parent d753468 commit 203763a

2 files changed

Lines changed: 103 additions & 0 deletions

File tree

Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
script_name("debugSAMPAPI")
2+
script_version("v1.0")
3+
script_authors("Tim4ukys")
4+
script_dependencies("SA-MP v0.3.7 R1", "SA-MP v0.3.7 R3-1", "SA-MP v0.3.DL R1", "SA-MP v0.3.7 R4-2")
5+
6+
local dl = require "SA-MP API.init"
7+
local ffi = require( 'ffi' )
8+
9+
local encoding = require 'encoding'
10+
encoding.default = 'UTF-8'
11+
cp1251 = encoding.CP1251
12+
13+
function debugMessageToChat( msg )
14+
dl.AddMessageToChat(8, cp1251"DEBUG SA-MP API: {FFFFFF}" .. msg, nullptr, 0x12b897, 0)
15+
end
16+
17+
local runDebug = false
18+
19+
function cmdTestSAMPAPI( param )
20+
if runDebug == false then
21+
runDebug = true
22+
23+
--[[
24+
Т.к. мы будем использовать wait(), чтобы не замораживать основной поток я создаю новый поток.
25+
26+
Если вызвать wait в функции main, то ничего не произайдёт с игрой, т.к. moonloader при загрузке
27+
lua скриптов создаёт под него новый поток(точно так же делает cleo и sumpfuncs), и при вызове wait фактически
28+
вы замораживаете только его. Эту функцию будет вызывать основной поток игры, и по этому придётся создавать новый поток,
29+
дабы не ёбнуть игру к хуям.
30+
31+
Чтобы не создавать по 1000 раз потоки, добавленно условие чтобы это сделать было нельзя.
32+
]]
33+
lua_thread.create(function()
34+
35+
-- stChatInfo
36+
debugMessageToChat(cp1251"Тестирование API начато")
37+
38+
-- stInputBox and Misc
39+
dl.SendChat("/cmds") -- Прописываем команду "/cmds"
40+
wait(5000)
41+
42+
dl.SetInputMode( 2, false )
43+
debugMessageToChat(cp1251"Курсор - {00FF00}ON")
44+
wait(3000)
45+
dl.SetInputMode( 0, true )
46+
debugMessageToChat(cp1251"Курсор - {FF0000}OFF")
47+
48+
-- stLocalPlayer
49+
dl.RequestSpawn()
50+
debugMessageToChat(cp1251"Отправлен запрос на спавн. Через 10 секунд будет принудительный спавн")
51+
wait(10000)
52+
dl.Spawn()
53+
debugMessageToChat(cp1251"Принудительный спавн... Через 10 секунд сменится интерьер")
54+
55+
wait(10000)
56+
local oldIntID = dl.Get().pBase.pPools.pPlayer.pLocalPlayer.byteCurrentInterior
57+
debugMessageToChat(cp1251"Текущий интерьер: " .. oldIntID)
58+
local newIntID = nil
59+
if oldIntID ~= 0 then
60+
newIntID = 0
61+
else
62+
newIntID = math.random(1, 99)
63+
end
64+
dl.SendInteriorChange( newIntID )
65+
debugMessageToChat(cp1251"Сменён интерьер на " .. newIntID .. cp1251". Через 2 секунды вернётся всё как было")
66+
wait(1000)
67+
dl.SendInteriorChange(oldIntID)
68+
69+
-- game
70+
debugMessageToChat(cp1251"Сейчас будет сделан скриншот..")
71+
dl.TakeScreenshot()
72+
debugMessageToChat(cp1251"Скриншот сделан!")
73+
74+
-- textdraw list
75+
debugMessageToChat(cp1251"Список всех textdraw'ов будет в log'е moonloader'а")
76+
for i=0, 2303 do
77+
local textdrawText = ffi.string(dl.TextdrawGetString( i ))
78+
79+
if textdrawText ~= '' then
80+
print("id: " .. i .. " | text: " .. textdrawText)
81+
end
82+
end
83+
84+
-- dialog
85+
dl.ShowDialog( 228, 0, cp1251"Важная инфа", cp1251"Скоро будет конец тестирования", cp1251"Круто!", "", false )
86+
87+
debugMessageToChat(cp1251"Конец тестирования")
88+
89+
runDebug = false
90+
end)
91+
end
92+
end
93+
94+
function main()
95+
while not dl.GetIsAvailable() do wait(0) end
96+
97+
dl.AddMessageToChat(8, cp1251"DEBUG SA-MP API: {FFFFFF}Самп успешно инициализирован! CMD: /test_sampapi", nullptr, 0x12b897, 0)
98+
99+
dl.RegisterClientCommand("test_sampapi", cmdTestSAMPAPI, true)
100+
101+
wait(-1)
102+
end

example/debugSAMP-API/readme.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Скрипт для тестирования данного API.

0 commit comments

Comments
 (0)