MX_Master

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

Recommended Posts

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

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

-----------

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

math.fmod (x, y)

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

-----------

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

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

Edited by Guest

Share this post


Link to post

math.floor (x)

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

----

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

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

Share this post


Link to post

Как можно убрать окошко гуя типа как это: ?

guiWindw = guiCreateWindow(0.365,0.7283,0.4888,0.1783,"Text",true) 

если это не канает.

guiSetVisible(guiWindw, false) 

Дебаг молчит

Заранее спс

Share this post


Link to post

если надо только визуально скрыть то

guiSetAlpha ( элемент, 0 ) 

Share this post


Link to post

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

Share this post


Link to post

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

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 
  

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

Share this post


Link to post
Клиентский скрипт вот:
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 
  

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

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

Share this post


Link to post

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

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

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

на

addEventHandler("onClientResourceStart", resourceRoot, selectorenable) 

Share this post


Link to post

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

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

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) 

Share this post


Link to post

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

Share this post


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

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

Share this post


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

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

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

Share this post


Link to post

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

/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 ) 

Share this post


Link to post

1)2 аргумент в функции addBan это строка.

2) bannedName это строка, а не элемент, ты не сможешь получить аккаунт.

Share this post


Link to post
local bannedAcc = getPlayerAccount ( bannedName ) 

local bannedAcc = getPlayerAccount ( getPlayerFromName( bannedName )) 

Share this post


Link to post

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

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

local bannedAcc = getPlayerAccount ( getPlayerFromName( bannedName )) 

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

banPlayer 

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

если я заменю

getPlayerAccount 

на

getAccountName 

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

Share this post


Link to post

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 ) 

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

Share this post


Link to post
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 ) 

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

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

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

Share this post


Link to post

Скорее аргумент, а не функцию.

Share this post


Link to post

ссылку найти не могу, где попросить аргумент можно

Share this post


Link to post

Здравствуйте! Помогите искал и немог найти эту анимацию:

Share this post


Link to post

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.