Jump to content

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


Recommended Posts

я не понял что делает эта функция. ничего не происходит. :shock:

уточнаяю: как созданного педа нацелить на игрока, чтобы прицел педа попадал именно в игрока (лево/право/низ/верх).

Функция устанавливает педу цель по координатам. Используй https://wiki.multitheftauto.com/wiki/GetPedBonePosition для того, чтобы узнать координаты кости к которой нужно целиться

Link to comment

Code:

local team1name 
local team2name 
function _f2(commandname, name1, name2) 
    name1 = team1name 
    name2 = team2name 
    outputChatBox("Team 1 name: "..team1name.."     Team 2 name: "..team2name, source) 
end 
addCommandHandler("stn", _f2) 

Идея: присваивать 2 текстовым переменных значение. Но ЛУА ругается, что не может им присвоить, т.к они nil.

Link to comment
Code:
local team1name 
local team2name 
function _f2(commandname, name1, name2) 
    name1 = team1name 
    name2 = team2name 
    outputChatBox("Team 1 name: "..team1name.."     Team 2 name: "..team2name, source) 
end 
addCommandHandler("stn", _f2) 

Идея: присваивать 2 текстовым переменных значение. Но ЛУА ругается, что не может им присвоить, т.к они nil.

Советую основы кодинга почитать: http://ilovelua.narod.ru/about_lua.html

Link to comment
function showWeaponShopWindow() 
    guiSetInputEnabled(true) 
    guiSetVisible ( WeaponShop_window_1, true ) 
    showCursor ( true ) 
end 
addCommandHandler("wpshop",showWeaponShopWindow) 
  
function closeWeaponShopWindow() 
    guiSetInputEnabled(false) 
    guiSetVisible ( WeaponShop_window_1, false ) 
    showCursor ( false ) 
end 
addCommandHandler("wpclose",closeWeaponShopWindow) 
  
function bindWeapShopKeys() 
    bindKey ( "b", "down", wpshop ) 
end 
setTimer ( bindWeapShopKeys, 1000, 1) 
  
addEventHandler ( "onClientGUIClick", WeaponShop_button_51, closeWeaponShopWindow ) 
  
guiSetInputEnabled(false) 
guiSetVisible ( WeaponShop_window_1, false ) 
showCursor ( false ) 

не могу забиндить, команды работают, только бинд не хочет

Link to comment
function showWeaponShopWindow() 
    guiSetInputEnabled(true) 
    guiSetVisible ( WeaponShop_window_1, true ) 
    showCursor ( true ) 
end 
addCommandHandler("wpshop",showWeaponShopWindow) 
  
function closeWeaponShopWindow() 
    guiSetInputEnabled(false) 
    guiSetVisible ( WeaponShop_window_1, false ) 
    showCursor ( false ) 
end 
addCommandHandler("wpclose",closeWeaponShopWindow) 
  
function bindWeapShopKeys() 
    bindKey ( "b", "down", wpshop ) 
end 
setTimer ( bindWeapShopKeys, 1000, 1) 
  
addEventHandler ( "onClientGUIClick", WeaponShop_button_51, closeWeaponShopWindow ) 
  
guiSetInputEnabled(false) 
guiSetVisible ( WeaponShop_window_1, false ) 
showCursor ( false ) 

не могу забиндить, команды работают, только бинд не хочет

У тебя бинд на команду чтоль?

bindKey ( "b", "down", wpshop )

Он на функцию должен быть!

Пробуй так:

bindKey ( "b", "down", showWeaponShopWindow )

Link to comment

спасибо, оба способа работают, раньше делал на функцию, но не работало(скорее всего неправильно написал).

Ещё один вопрос.

function consoleGive ( thePlayer, commandName, weaponID, ammo, minusMoney ) 
    local status = giveWeapon ( thePlayer, weaponID, ammo, true )   -- attempt to give the weapon, forcing it as selected weapon 
    local minusMoney = givePlayerMoney ( thePlayer, ??? ) 
    if ( not status ) then                                          -- if it was unsuccessful 
        outputConsole ( "Failed to give weapon.", thePlayer )   -- tell the player 
    end 
end 
addCommandHandler ( "give", consoleGive ) 
  

Как сделать так чтобы сделать на команду:

/give <патроны> <вычитаемые деньги>

мне это нужно для бинда комманд на кнопки в магазине оружия

da36bd5ee998.jpg

Заранее спасибо, выложу в комьюнити, укажу имена хелперов.

Link to comment

Примерно это хотел?:

function consoleGive ( thePlayer, commandName, weaponID, ammo ) 
    local status = giveWeapon ( thePlayer, tonumber(weaponID), tonumber(ammo), true )   -- attempt to give the weapon, forcing it as selected weapon 
    takePlayerMoney ( thePlayer, 500 ) 
    if ( not status ) then                                          -- if it was unsuccessful 
        outputConsole ( "Failed to give weapon.", thePlayer )   -- tell the player 
    end 
end 
addCommandHandler ( "give", consoleGive) 

Link to comment

сделал так

function consoleGive ( thePlayer, commandName, weaponID, ammo, minusMoney ) 
    local giveWeapon ( thePlayer, weaponID, ammo, true )   -- attempt to give the weapon, forcing it as selected weapon 
    local takePlayerMoney (thePlayer, tonumber (minusMoney)) 
end 
addCommandHandler ( "give", consoleGive ) 

при наборе give 35 200 2000, получил гранатомет с 200 ракетами, но деньги так и не вычло.

efcf9ae3d3ec.png

Как исправить? чтоб деньги вычитало.

Link to comment

Во первых, не надо local перед вызовом функций

Во вторых учись дебагать самостоятельно, с помощью outputChatBox. (Ну или outputDebugString)

Вот попробуй этот код, и проверь, что он выводит в чат.

  
function consoleGive ( thePlayer, commandName, weaponID, ammo, minusMoney ) 
    outputChatBox(tostring(weaponID).." "..tostring(ammo).." "..tostring(minusMoney)) 
    giveWeapon ( thePlayer, weaponID, ammo, true )   -- attempt to give the weapon, forcing it as selected weapon 
    takePlayerMoney ( thePlayer, tonumber (minusMoney) ) 
end 
addCommandHandler ( "give", consoleGive ) 
  

Link to comment
Вот попробуй этот код, и проверь, что он выводит в чат.
  
function consoleGive ( thePlayer, commandName, weaponID, ammo, minusMoney ) 
    outputChatBox(tostring(weaponID).." "..tostring(ammo).." "..tostring(minusMoney)) 
    giveWeapon ( thePlayer, weaponID, ammo, true )   -- attempt to give the weapon, forcing it as selected weapon 
    takePlayerMoney ( thePlayer, tonumber (minusMoney) ) 
end 
addCommandHandler ( "give", consoleGive ) 
  

ввел /25 1 200;

вышло сообщение 25 1 200

получил ружьё с 2мя патронами вместо 1го,

деньги вычитаются правильно.

Баг с удвоением исправил

giveWeapon ( thePlayer, weaponID, (ammo/2), true )

debugscript 3 на данный скрипт не ругается, проблема решена, спасибо.

Но на клиентской стороне я пытался привязать эту команду к кнопке, но ничего не выходит

addEventHandler ( "onClientGUIClick", WeaponShop_button_15, "give 22 200 200" ) 

в дебагскрипт 3 пишет: WARNING: _wpshop\wp_client.lua: 102: Bad argument @ 'addEventHandler' [Expected function at argument 3, got string 'give 22 200 200']

Link to comment

Здравствуйте, можете помочь сделать скрипт, чтобы при команде, например, /setmap, в файл maps.xml посылалось название карты, в которой играет игрок.

Link to comment
Вот попробуй этот код, и проверь, что он выводит в чат.
  
function consoleGive ( thePlayer, commandName, weaponID, ammo, minusMoney ) 
    outputChatBox(tostring(weaponID).." "..tostring(ammo).." "..tostring(minusMoney)) 
    giveWeapon ( thePlayer, weaponID, ammo, true )   -- attempt to give the weapon, forcing it as selected weapon 
    takePlayerMoney ( thePlayer, tonumber (minusMoney) ) 
end 
addCommandHandler ( "give", consoleGive ) 
  

ввел /25 1 200;

вышло сообщение 25 1 200

получил ружьё с 2мя патронами вместо 1го,

деньги вычитаются правильно.

Баг с удвоением исправил

giveWeapon ( thePlayer, weaponID, (ammo/2), true )

debugscript 3 на данный скрипт не ругается, проблема решена, спасибо.

Но на клиентской стороне я пытался привязать эту команду к кнопке, но ничего не выходит

addEventHandler ( "onClientGUIClick", WeaponShop_button_15, "give 22 200 200" ) 

в дебагскрипт 3 пишет: WARNING: _wpshop\wp_client.lua: 102: Bad argument @ 'addEventHandler' [Expected function at argument 3, got string 'give 22 200 200']

3 аргумент это функция, а у тебя строка ...

Тебе даже дебаг подсказывает.

Link to comment

А возможно ли вписать туда серверную функцию и с этими цифрами?

Как нить так, не знаю как это интерпретировать

addEventHandler ( "onClientGUIClick", WeaponShop_button_15, consoleGive ( thePlayer, commandName, weaponID, ammo, minusMoney) ) 

Link to comment

handlerFunction: The handler function you wish to call when the event is triggered. This function will be passed all of the event's parameters as arguments, but it isn't required that it takes all of them.

handlerFunction: Функция-обработчик, которую вы желаете вызывать при срабатывании события. Этой функции в качестве аргументов будут переданы все параметры события, но необязательно их всех получать.

Просто стараюсь прояснить. Кажется, что оно итак все передаст, вам лишь следует нужные вам указать в самой функции (function funcName(thePlayer, ...)) и т.д., только порядок мб будет как-то отличаться.

А если с клиента на сервер, то вроде бы нужны триггеры.

А вообще я что-то раньше обычного проснулся и мне нечего делать :(

Link to comment
А возможно ли вписать туда серверную функцию и с этими цифрами?

Как нить так, не знаю как это интерпретировать

addEventHandler ( "onClientGUIClick", WeaponShop_button_15, consoleGive ( thePlayer, commandName, weaponID, ammo, minusMoney) ) 

Ну можно ведь сделать так, если в лоб:

addEventHandler ( "onClientGUIClick", WeaponShop_button_15, function() executeCommandHandler ( "give", "22 200 200") end) 

дароу винц

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...