Jump to content

Общий мини "HELP ME" топик по скриптингу


Recommended Posts

Есть функция, чтобы получить целое число при делении и остаток?

Догадываюсь в math. может быть?

-----------

Первое нашёл. :D

math.fmod (x, y)

Возвращает остаток от деления x на y.

-----------

Целое можно и так получить:

local c = (a - math.fmod(a, 10)) / 10

Edited by Guest
Link to comment

math.floor (x)

Возвращает наибольшее целое число, меньшее или равное x. (Округление «вниз»)

----

Мне надо при делении целое число. Всё я уже нашёл решение.

P.S.: Сам спросил, сам ответил. :D

Link to comment

destroyElement можно. Но тогда нужно будет заново создавать GUI-окно. Кстати почему та функция не работает? Может Вы создали локальную переменную, а функцию вызываете за пределами области видимости?

Link to comment

Клиентский скрипт вот:

function CreateSelectorWindow() 
wdwselector = guiCreateWindow(0.365,0.7283,0.4888,0.1783,"Select Your Skin",true) 
        --guiSetAlpha(wdwselector,0.69999998807907) 
        guiWindowSetMovable(wdwselector,false) 
        guiWindowSetSizable(wdwselector,false) 
         
        btnLeft = guiCreateButton(0.023,0.3832,0.1918,0.3364,"<---",true,wdwselector) 
        btnSelect = guiCreateButton(0.2404,0.3832,0.1918,0.3364,"OK",true,wdwselector) 
        guiSetFont(btnSelect,"default-bold-small") 
        btnRight = guiCreateButton(0.4578,0.3832,0.1918,0.3364,"--->",true,wdwselector) 
        btnRand = guiCreateButton(0.7826,0.3832,0.1918,0.3364,"Random",true,wdwselector) 
guiSetVisible(wdwselector, false) 
end 
  
  
function selectorenable () 
CreateSelectorWindow() 
 addEventHandler("onClientGUIClick", btnLeft, clientSkinLeft, false) 
 addEventHandler("onClientGUIClick", btnSelect, clientSkinSelect, false) 
 addEventHandler("onClientGUIClick", btnRight, clientSkinRight, false) 
 addEventHandler("onClientGUIClick", btnRight, clientSkinRand, false) 
 addEventHandler("onClientGUIClick", btnRand, clientSkinRand, false) 
            if (wdwselector ~= nil) then 
                 guiSetVisible(wdwselector, true) 
                 triggerServerEvent("FrontCamera", getLocalPlayer()) 
            end 
            showCursor(true) 
    end 
addEventHandler("onClientResourceStart", getRootElement(), selectorenable) 
--addCommandHandler("skin", selectorenable, false, false) 
  
  
  
  
  
  
function clientSkinSelect(button) 
        showCursor(false) 
        triggerServerEvent("SkinSelected", getLocalPlayer()) 
        guiSetVisible(wdwselector, false) 
        guiSetVisible(btnLeft, false) 
        guiSetVisible(btnSelect, false) 
        guiSetVisible(btnRight, false) 
        guiSetVisible(btnRand, false) 
        local sound_click = playSound("click.wav") 
        setSoundVolume(sound_click, 0.-- s8) --> -- set the sound volume to 50%      
end 
  
function clientSkinRight(button) 
    local sound_click = playSound("click.wav") 
    setSoundVolume(sound_click, 0.7) 
    triggerServerEvent("SkinRight", getLocalPlayer()) 
end 
  
function clientSkinLeft(button) 
    local sound_click = playSound("click.wav") 
    setSoundVolume(sound_click, 0.-- s8) -->
    triggerServerEvent("SkinLeft", getLocalPlayer()) 
end 
  
function clientSkinRand(button) 
    local sound_click = playSound("click.wav") 
    setSoundVolume(sound_click, 0.-- s8) -->
    triggerServerEvent("SkinRand", getLocalPlayer()) 
end 
  

Чужой скинселектор вставил в гейммод свой, в оригинале он был отдельный и вызвался через консоль (https://community.multitheftauto.com/index.php?p= ... ils&id=593)

Link to comment
Клиентский скрипт вот:
function CreateSelectorWindow() 
wdwselector = guiCreateWindow(0.365,0.7283,0.4888,0.1783,"Select Your Skin",true) 
        --guiSetAlpha(wdwselector,0.69999998807907) 
        guiWindowSetMovable(wdwselector,false) 
        guiWindowSetSizable(wdwselector,false) 
         
        btnLeft = guiCreateButton(0.023,0.3832,0.1918,0.3364,"<---",true,wdwselector) 
        btnSelect = guiCreateButton(0.2404,0.3832,0.1918,0.3364,"OK",true,wdwselector) 
        guiSetFont(btnSelect,"default-bold-small") 
        btnRight = guiCreateButton(0.4578,0.3832,0.1918,0.3364,"--->",true,wdwselector) 
        btnRand = guiCreateButton(0.7826,0.3832,0.1918,0.3364,"Random",true,wdwselector) 
guiSetVisible(wdwselector, false) 
end 
  
  
function selectorenable () 
CreateSelectorWindow() 
 addEventHandler("onClientGUIClick", btnLeft, clientSkinLeft, false) 
 addEventHandler("onClientGUIClick", btnSelect, clientSkinSelect, false) 
 addEventHandler("onClientGUIClick", btnRight, clientSkinRight, false) 
 addEventHandler("onClientGUIClick", btnRight, clientSkinRand, false) 
 addEventHandler("onClientGUIClick", btnRand, clientSkinRand, false) 
            if (wdwselector ~= nil) then 
                 guiSetVisible(wdwselector, true) 
                 triggerServerEvent("FrontCamera", getLocalPlayer()) 
            end 
            showCursor(true) 
    end 
addEventHandler("onClientResourceStart", getRootElement(), selectorenable) 
--addCommandHandler("skin", selectorenable, false, false) 
  
  
  
  
  
  
function clientSkinSelect(button) 
        showCursor(false) 
        triggerServerEvent("SkinSelected", getLocalPlayer()) 
        guiSetVisible(wdwselector, false) 
        guiSetVisible(btnLeft, false) 
        guiSetVisible(btnSelect, false) 
        guiSetVisible(btnRight, false) 
        guiSetVisible(btnRand, false) 
        local sound_click = playSound("click.wav") 
        setSoundVolume(sound_click, 0.-- s8) --> -- set the sound volume to 50%      
end 
  
function clientSkinRight(button) 
    local sound_click = playSound("click.wav") 
    setSoundVolume(sound_click, 0.7) 
    triggerServerEvent("SkinRight", getLocalPlayer()) 
end 
  
function clientSkinLeft(button) 
    local sound_click = playSound("click.wav") 
    setSoundVolume(sound_click, 0.-- s8) -->
    triggerServerEvent("SkinLeft", getLocalPlayer()) 
end 
  
function clientSkinRand(button) 
    local sound_click = playSound("click.wav") 
    setSoundVolume(sound_click, 0.-- s8) -->
    triggerServerEvent("SkinRand", getLocalPlayer()) 
end 
  

Чужой скинселектор вставил в гейммод свой, в оригинале он был отдельный и вызвался через консоль (https://community.multitheftauto.com/index.php?p= ... ils&id=593)

Не убирается окошко GUI после выбора скина

Link to comment

функцию selectorenable(), с идущим за ним addEventHandler, переместить в конец кода.

также заменить

addEventHandler("onClientResourceStart", getRootElement(), selectorenable) 

на

addEventHandler("onClientResourceStart", resourceRoot, selectorenable) 

Link to comment

А можно ли тут сделать динамическую камеру, чтобы смотрела на игрока на лицо и смотрела на него даже если он переместился куда нить, вобщем чтобы следовала за игроком смотря на него с переди?

Суть в том, что скрипт бывает грузится первее гейммода и получается что камера устанавливается где-то в поле, в деревне, а игрок появляется где надо на спавнпоинте

function camf() 
local px,py,pz = getElementPosition( source ) 
local rot = setPedRotation(source, 1) 
setCameraMatrix( source, px, py+2, pz, px, py, pz) 
end 
addEvent("FrontCamera", true) 
addEventHandler("FrontCamera", getRootElement(), camf) 
  
function selected() 
fadeCamera(source, true) 
setCameraTarget(source, source) 
outputChatBox("Skin selected!!!", source) 
end 
addEvent("SkinSelected", true) 
addEventHandler("SkinSelected", getRootElement(), selected) 
  
function skinright() 
local skin = getPedSkin(source) 
if (skin == 0) then 
setPedSkin(client, 7) 
elseif (skin == 7) then 
setPedSkin(client, 9) 
elseif (skin == 41) then 
setPedSkin(client, 43) 
elseif (skin == 64) then 
setPedSkin(client, 66) 
elseif (skin == 85) then 
setPedSkin(client, 87) 
elseif(skin == 118) then 
setPedSkin(client, 120) 
elseif(skin == 148) then 
setPedSkin(client, 150) 
elseif(skin == 207) then 
setPedSkin(client, 209) 
elseif(skin == 238) then 
setPedSkin(client, 240) 
elseif(skin == 264) then 
setPedSkin(client, 274) 
elseif(skin == 288) then 
setPedSkin(client, 0) 
else 
setPedSkin(source, skin+1) 
end 
end 
addEvent("SkinRight", true) 
addEventHandler("SkinRight", getRootElement(), skinright) 
  
function skinleft() 
local skin = getPedSkin(source) 
if (skin == 7) then 
setPedSkin(client, 0) 
elseif (skin == 9) then 
setPedSkin(client, 7) 
elseif (skin == 43) then 
setPedSkin(client, 41) 
elseif (skin == 66) then 
setPedSkin(client, 64) 
elseif (skin == 87) then 
setPedSkin(client, 85) 
elseif(skin == 120) then 
setPedSkin(client, 118) 
elseif(skin == 150) then 
setPedSkin(client, 148) 
elseif(skin == 209) then 
setPedSkin(client, 207) 
elseif(skin == 240) then 
setPedSkin(client, 238) 
elseif(skin == 274) then 
setPedSkin(client, 264) 
elseif(skin == 0) then 
setPedSkin(client, 288) 
else 
setPedSkin(source, skin-1) 
end 
end 
addEvent("SkinLeft", true) 
addEventHandler("SkinLeft", getRootElement(), skinleft) 
  
function skinrand() 
local skin = getPedSkin(source) 
--setPedSkin(client, math.random(312)) 
setPedSkin(source, math.random(312)) 
end 
addEvent("SkinRand", true) 
addEventHandler("SkinRand", getRootElement(), skinrand) 

Link to comment
Стоит делать много своих событий вместо функций?

глупо юзать отвертку для забивания гвоздей

Если не знать про молоток то можно и отвёрткой - только за другую сторону взять и шансы забить гвоздь удвоятся.

Link to comment

Можно ли сделать бан по аккаунту..

/banacc

мой код не работает

function banPlayerCommand ( theClient, command, bannedName, reason ) -- The function header and where source is defined 
    local bannedAcc = getPlayerAccount ( bannedName ) 
    if bannedAcc then 
        addBan ( nil, bannedAcc, nil, theClient, "TEST" ) 
        outputChatBox ( "ban: " .. bannedAcc .. " successfully banned", theClient ) 
    else 
        outputChatBox ( "ban: Account "..bannedAcc.." was not found", theClient ) 
    end 
end 
addCommandHandler ( "bann", banPlayerCommand ) 

Link to comment

у меня нет представлений тогда как сделать это

я перепробывал кучу вариантов.. не один из них не работает,

local bannedAcc = getPlayerAccount ( getPlayerFromName( bannedName )) 

мне нужно чтобы он банил если даже игрок оффлайн

banPlayer 

не работает тоже

если я заменю

getPlayerAccount 

на

getAccountName 

ничего не изменится

Link to comment

banPlayer ты не можешь юзать т.к требует элемента игрока на сервере.

Аккаунт можешь банить только мта сообщества.( т.е не игрока с аккаунтом на сервере )

Смотри в аргументах.

function banPlayerCommand ( player, command, ip, serial, reason ) -- The function header and where source is defined 
    if addBan ( ip, nil , serial, player, reason or '' ) then 
        outputChatBox ( "ban: success", player ) 
    end  
end 
addCommandHandler ( "bann", banPlayerCommand ) 

Тока так если или написать свою систему.

Link to comment
banPlayer ты не можешь юзать т.к требует элемента игрока на сервере.

Аккаунт можешь банить только мта сообщества.( т.е не игрока с аккаунтом на сервере )

Смотри в аргументах.

function banPlayerCommand ( player, command, ip, serial, reason ) -- The function header and where source is defined 
    if addBan ( ip, nil , serial, player, reason or '' ) then 
        outputChatBox ( "ban: success", player ) 
    end  
end 
addCommandHandler ( "bann", banPlayerCommand ) 

Тока так если или написать свою систему.

короче это бредовая идея..

проще на баг трекере запросить функцию

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...