562141 Posted June 4, 2012 Share Posted June 4, 2012 Народ непартесь с написанным выше мне уже помогли ))) Link to comment
Scripting Moderators Sarrum Posted June 5, 2012 Scripting Moderators Share Posted June 5, 2012 оффтоп: 562141, кнопка 'EDIT' для кого? Link to comment
Flaker Posted June 6, 2012 Share Posted June 6, 2012 Цель: Получить кол-во патрон в определенном оружии (Гранатах), далее записать в таблицу в таком виде: Grenades[source] = int AMMO Затем получить из таблицы значение AMMO, определенного игрока (thePlayer). У меня постоянно получает 1 (хотя было 90), как исправить? Вот мой код: (SERVERSIDE) local Grenades = {} function setGrenadesAmmo (thePlayer) --Запись в таблицу local thePlayerHeAmmo = tonumber(getPedAmmoInClip ( thePlayer, getSlotFromWeapon ( 16 ))) if thePlayerHeAmmo > 0 then Grenades[thePlayer] = tonumber( thePlayerHeAmmo - 1 ) takeWeapon ( thePlayer, 16 ) end end function getGrenadesAmmo (thePlayer) --Получение значения из таблицы local thePlayerHeAmmoGive = tonumber( Grenades[thePlayer] ) giveWeapon ( thePlayer, 16, thePlayerHeAmmoGive, false ) outputChatBox ( "U got "..thePlayerHeAmmoGive.." grenades", thePlayer, 255, 0, 0, true ) end Link to comment
Mc_Trekkie Posted June 6, 2012 Share Posted June 6, 2012 (edited) Суть:Когда игрок наступает на маркер у него меняет дата(setElementData заюзал.Код давать не буду,т.к там всё правильно,ИМХО) А когда он умирает - сводить его Data на 0. function test () if getElementData(source, "tempdata.mission1o4kinaidenu", yes) then setElementData(source, "tempdata.mission1o4kinaidenu",no) outputChatBox ( "#FFFFFFМиссия провалена.", source, 255, 0, 0, true ) end end addEventHandler ( "onPlayerWasted", getRootElement(), test ) Edited June 6, 2012 by Guest Link to comment
Flaker Posted June 6, 2012 Share Posted June 6, 2012 Не не не, про ElementData я знаю, но в данном случае мне нужно использовать именно таблицу. Link to comment
Kenix Posted June 6, 2012 Share Posted June 6, 2012 Flaker, local thePlayerHeAmmo = tonumber(getPedAmmoInClip ( thePlayer, getSlotFromWeapon ( 16 ))) На вики написано, что в гранатах всего 1 клип. Я думаю, что тебе нужно получить кол-во патронов у оружия. https://wiki.multitheftauto.com/wiki/Weapon В данном случае юзай это getPedTotalAmmo Link to comment
Flaker Posted June 6, 2012 Share Posted June 6, 2012 Flaker, local thePlayerHeAmmo = tonumber(getPedAmmoInClip ( thePlayer, getSlotFromWeapon ( 16 ))) На вики написано, что в гранатах всего 1 клип. Я думаю, что тебе нужно получить кол-во патронов у оружия. https://wiki.multitheftauto.com/wiki/Weapon В данном случае юзай это getPedTotalAmmo Ахх, вот оно что, я был искренне уверен, что проблема в том, что я не знаю как получить значение ключа таблицы) В очередной раз, Спасибо огромное за помощь) Link to comment
Mc_Trekkie Posted June 7, 2012 Share Posted June 7, 2012 Подскажите где взять скрипт на открывание капота) Link to comment
Flaker Posted June 7, 2012 Share Posted June 7, 2012 [url=https://wiki.multitheftauto.com/wiki/SetVehicleDoorOpenRatio]https://wiki.multitheftauto.com/wiki/Set ... rOpenRatio[/url] door 0 это капот Link to comment
Scripting Moderators Sarrum Posted June 8, 2012 Scripting Moderators Share Posted June 8, 2012 Подскажите где взять скрипт на открывание капота) https://community.multitheftauto.com/ind ... ls&id=2602 Link to comment
Flaker Posted June 8, 2012 Share Posted June 8, 2012 Подскажите, как определить тип Race мода. (DM, DD, FUN) Допустим, как сделать проверку в скрипте, на тип запущенного в данный момент Race мода. Что то типо этого: if racetype = "DM" then Link to comment
Scripting Moderators Sarrum Posted June 9, 2012 Scripting Moderators Share Posted June 9, 2012 Отредактировать только. viewtopic.php?p=408320#p408320 Link to comment
Mc_Trekkie Posted June 9, 2012 Share Posted June 9, 2012 Итак. Мой вопрос такой: У меня в моде действия все на клиенте,и когда ты берешь миссию со своим другом(Например),то создаётся маркер только у того,кто взял эту миссию первый...Как решить проблемку? Тут не надо выкладывать код.Т.к код неважен.(Скажу только то что Миссия в GUI) Link to comment
_Vincent_ Posted June 9, 2012 Share Posted June 9, 2012 От многих опытных людей слышал, что на клиенте лучше делать все по минимуму, так что твои слова на счет всех действий на клиенте напрягают. Как ты вообще действия синхронизируешь? Триггеры или что? Link to comment
LoveFist Posted June 9, 2012 Share Posted June 9, 2012 _Vincent_ смотря для какой задачи Клиентские скрипты очень классная вещь, главное не злоупотре:Oть ивентами onClientRender и preRender Link to comment
_Vincent_ Posted June 10, 2012 Share Posted June 10, 2012 Там речь шла скорее о безопасности. Link to comment
562141 Posted June 12, 2012 Share Posted June 12, 2012 Народ помогите пж как зделать чтоб когда человек убил пятерых иглает музыка о также 10-рых Link to comment
Mc_Trekkie Posted June 13, 2012 Share Posted June 13, 2012 Чувак. Смотри. Записываешь переменную потом,когда человек умирает прибавляешь к переменной +1. Потом просто проверяй сколько он убил и др. К примеру: [sERVER] [[-----]] kills = 0 function uKills (totalAmmo, killer, killerweapon, bodypart, stealth,kills) local playerTeam = getPlayerTeam ( killer ) if (killer) and (killer ~= source) and ( kills == 0 ) then kills = 1 triggerClientEvent("Music",killer) end end addEventHandler ("onPlayerWasted", getRootElement(), killReward) CLIENT function Music () playSound("Тут путь к папке",false) end addEvent("Music",true) addEventHandler("Music",getRootElement(), Music) Link to comment
Flaker Posted June 13, 2012 Share Posted June 13, 2012 Чувак.Смотри. Записываешь переменную потом,когда человек умирает прибавляешь к переменной +1. Потом просто проверяй сколько он убил и др. К примеру: [sERVER] [[-----]] kills = 0 function uKills (totalAmmo, killer, killerweapon, bodypart, stealth,kills) local playerTeam = getPlayerTeam ( killer ) if (killer) and (killer ~= source) and ( kills == 0 ) then kills = 1 triggerClientEvent("Music",killer) end end addEventHandler ("onPlayerWasted", getRootElement(), killReward) CLIENT function Music () playSound("Тут путь к папке",false) end addEvent("Music",true) addEventHandler("Music",getRootElement(), Music) Несколько ошибок из твоего кода, MacTrekkie. 1) Так как переменная kills создается на серверной стороне, соответственно она едина для всех игроков сервера, а значит, как только она станет 10, то звук воспроизведется у всех игроков сервера... 2) У тебя переменная kill не увеличивается! (9 строка должна быть kills = kills + 1 ), и не должно быть проверки на kills == 0, так как при такой проверке kills увеличится только 1 раз, а все остальные разы kills уже не будет == 0. 3) Зачем вобще получать команду игрока? 4) Небольшая оптимизация: triggerClientEvent("Music",killer) будет отсылаться всем игрокам сервера, а проигрываться только у killer, в таком случае, зачем отсылать ее всем игрокам? Лучше будет укзать элемент, которому отсылается эвент: triggerClientEvent(killer, "Music", killer) P.S. Указал на ошибки, только для того, что бы люди потом не копировали неправильный код. Нисколько не хочу задеть тебя этим. Link to comment
Mc_Trekkie Posted June 13, 2012 Share Posted June 13, 2012 Чувак.Смотри. Записываешь переменную потом,когда человек умирает прибавляешь к переменной +1. Потом просто проверяй сколько он убил и др. К примеру: [sERVER] [[-----]] kills = 0 function uKills (totalAmmo, killer, killerweapon, bodypart, stealth,kills) local playerTeam = getPlayerTeam ( killer ) if (killer) and (killer ~= source) and ( kills == 0 ) then kills = 1 triggerClientEvent("Music",killer) end end addEventHandler ("onPlayerWasted", getRootElement(), killReward) CLIENT function Music () playSound("Тут путь к папке",false) end addEvent("Music",true) addEventHandler("Music",getRootElement(), Music) Несколько ошибок из твоего кода, MacTrekkie. 1) Так как переменная kills создается на серверной стороне, соответственно она едина для всех игроков сервера, а значит, как только она станет 10, то звук воспроизведется у всех игроков сервера... 2) У тебя переменная kill не увеличивается! (9 строка должна быть kills = kills + 1 ), и не должно быть проверки на kills == 0, так как при такой проверке kills увеличится только 1 раз, а все остальные разы kills уже не будет == 0. 3) Зачем вобще получать команду игрока? 4) Небольшая оптимизация: triggerClientEvent("Music",killer) будет отсылаться всем игрокам сервера, а проигрываться только у killer, в таком случае, зачем отсылать ее всем игрокам? Лучше будет укзать элемент, которому отсылается эвент: triggerClientEvent(killer, "Music", killer) P.S. Указал на ошибки, только для того, что бы люди потом не копировали неправильный код. Нисколько не хочу задеть тебя этим. Та да.Спасибо.Я понял сам.Сейчас же Я юзаю setElementData.Вот так вот. [b]1)[/b] Так как переменная [b]kills[/b] создается на серверной стороне, соответственно она едина для всех игроков сервера, а значит, как только она станет [b]10[/b], то звук воспроизведется у всех игроков сервера... [b]2)[/b] У тебя переменная [b]kill[/b] не увеличивается! ([i]9 строка должна быть kills = kills + 1[/i] ), и не должно быть проверки на [b]kills == 0[/b], так как при такой проверке [b]kills[/b] увеличится только [b]1[/b] раз, а все остальные разы [b]kills[/b] уже не будет[b] == 0[/b]. 3) Зачем вобще получать команду игрока? Итак.Это был пример(С Kills == 0 ).Вот . Link to comment
Mc_Trekkie Posted June 13, 2012 Share Posted June 13, 2012 [[CLIENT]] kills = 0 function uKills (totalAmmo, killer, killerweapon, bodypart, stealth,kills) -- Это пример.Проигрывает звук когда кол-во убийств 2. if (killer) and (killer ~= source) then if( kills == 0 ) then kills = 0 + 1 if( kills == 1 ) then kills = 1 + 1 local sound = playSound(killer,"sounds/песня/звук.mp3") setSoundVolume(sound, 0.5) end end end end addEventHandler ("onClientPlayerWasted", getRootElement(), uKills) Link to comment
TwiX! Posted June 13, 2012 Share Posted June 13, 2012 kills = 0 function uKills (totalAmmo, killer, killerweapon, bodypart, stealth,kills) -- Это пример.Проигрывает звук когда кол-во убийств 2. if (killer) and (killer ~= source) then kills = kills+1 if( kills == 2 ) then local sound = playSound(killer,"sounds/песня/звук.mp3") setSoundVolume(sound, 0.5) end end end addEventHandler ("onClientPlayerWasted", getRootElement(), uKills) Link to comment
Flaker Posted June 13, 2012 Share Posted June 13, 2012 Twix, в данном коде переменная kills глобальная, будет ли это влиять на что-то? Возможно при глобальной переменной она будет иметь одно значение для всех игроков, не? P.S. Это вопрос... Просто я думал, что глобальная переменная видна даже из другого файла, поэтому всегда использовал локальные... Верно не? Link to comment
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now