Memory Posted June 3, 2013 Share Posted June 3, 2013 ~Gangsta~ попробуй dimension's ( https://wiki.multitheftauto.com/wiki/Ge ... tDimension ) Привет всем, делаю небольшую afk системку для race, подскажите как можно запустить timer (afktimerCheck) после countdown. Пока сделал, чтобы после запуска карты через 15 сек запускался, но это не вариант. local afkTimeWarning = 10000 local afkTimeBlow = 20000 function checkAFKPlayers() for index, thePlayer in ipairs(getElementsByType("player"))do if (getElementData(thePlayer, "state") == "alive") then if (getPlayerIdleTime(thePlayer) > afkTimeWarning-1000) and (getPlayerIdleTime(thePlayer) < afkTimeBlow-1000)then triggerClientEvent ( "warning", thePlayer) end if (getPlayerIdleTime(thePlayer) > afkTimeBlow-1000) then setElementHealth(thePlayer, 0) local afkCount = getElementData (thePlayer, "afk") or 0 if (afkCount == 4) then kickPlayer ( thePlayer, "You were kicked by AFK System [5/5]" ) else setElementData(thePlayer, "afk", afkCount+1) end triggerClientEvent ( "blow", thePlayer) end end end end afktimerCheck = setTimer(checkAFKPlayers, afkTimeWarning, 0) addEvent("onMapStarting") addEventHandler("onMapStarting", getRootElement(), function () if isTimer ( afktimerCheck ) then killTimer ( afktimerCheck ) end setTimer(function() afktimerCheck = setTimer(checkAFKPlayers, afkTimeWarning, 0) end, 15000, 1) end) Link to comment
DakiLLa Posted June 3, 2013 Share Posted June 3, 2013 делаю небольшую afk системку для race, подскажите как можно запустить timer (afktimerCheck) после countdown Race имеет несколько полезных событий в своем наборе (почитайте документацию к ресурсу, там много полезной информации). Обратите внимание на onRaceStateChanging. Link to comment
Ruga Posted June 4, 2013 Share Posted June 4, 2013 не подскажите как запретить клиенту скачивать допустим модели вот это как то не прокатило .. Link to comment
Kenix Posted June 4, 2013 Share Posted June 4, 2013 Это работает только для скриптов! Link to comment
Korish0074 Posted June 4, 2013 Share Posted June 4, 2013 Помогите настроить правельно local nonOpenables = { --this is easier [290]=true, [291]=true, [292]=true } addEvent "onPlayerHeadshot" addEventHandler("onPlayerDamage", getRootElement(), function (attacker, weapon, bodypart, loss, hitPlayer,thePlayer) local skin = getElementModel (thePlayer) if bodypart == 9 then if nonOpenables[skin] then local result = triggerEvent("onPlayerHeadshot", source, attacker, weapon, loss) if result == true then killPed(source, attacker, weapon, bodypart) end end end end ) Link to comment
Ruga Posted June 4, 2013 Share Posted June 4, 2013 https://wiki.multitheftauto.com/wiki/RU/Meta.xml почему тут указано что для файлов? для скрипта cash , или все таки с 1.4 версии? мб можно запрет поставить на закачку, не хочется заставлять игрока скачивать архив моделей при конекте Link to comment
DakiLLa Posted June 4, 2013 Share Posted June 4, 2013 Атрибут "download" для файлов в версии 1.4 можно выставить, если вы хотите самостоятельно (то бишь, вручную), загрузить их с помощью функции downloadFile в любое момент времени, а не при заходе на сервер. А вот полностью исключить кэширование файлов на клиенте, похоже, не выйдет. Link to comment
Ruga Posted June 4, 2013 Share Posted June 4, 2013 нет, для чего удалять файлы? их просто нужно прогрузить после конекта в определенное время. но меня огорчает что я ничего найти не могу и придумать как существенно повлиять на закачку. Link to comment
DakiLLa Posted June 5, 2013 Share Posted June 5, 2013 нет, для чего удалять файлы? их просто нужно прогрузить после конекта в определенное время. но меня огорчает что я ничего найти не могу и придумать как существенно повлиять на закачку. А, вот как. Ну в таком случае либо ждете 1.4, либо можно порыться на комьюнити (или форуме) и найти что-нибудь подобное. Link to comment
Korish0074 Posted June 5, 2013 Share Posted June 5, 2013 Помогите мне, у меня не работает: local nonOpenables = { --this is easier [290]=true, [291]=true, [292]=true } addEvent "onPlayerHeadshot" addEventHandler("onPlayerDamage", getRootElement(), function (attacker, weapon, bodypart, loss, hitPlayer,thePlayer) local skin = getElementModel (thePlayer) if bodypart == 9 then if nonOpenables[skin] then local result = triggerEvent("onPlayerHeadshot", source, attacker, weapon, loss) if result == true then killPed(source, attacker, weapon, bodypart) end end end end ) Link to comment
Ruga Posted June 5, 2013 Share Posted June 5, 2013 DakiLLa, спасибо гляну вроде бы то что надо)) Korish0074 , 7 строка во первых не закрыта и не аргументирована вторым аргументом, во вторых к чему вы вешаете этот обработчик? кода к нему не вижу тут. почитайте https://wiki.multitheftauto.com/wiki/AddEvent addEvent( "onPlayerHeadshot",true) p.s. зачем постить вопрос несколько раз?)) все и так все увидят и помогут по мере возможности Link to comment
DakiLLa Posted June 5, 2013 Share Posted June 5, 2013 Korish0074, событие "onPlayerDamage" передает в функцию лишь 4 первых параметра, а у вас откуда-то там взялись еще hitPlayer и thePlayer. Объясните, что вы хотите сделать? Может проще по другому написать код. Link to comment
Korish0074 Posted June 5, 2013 Share Posted June 5, 2013 Korish0074, событие "onPlayerDamage" передает в функцию лишь 4 первых параметра, а у вас откуда-то там взялись еще hitPlayer и thePlayer. Объясните, что вы хотите сделать? Может проще по другому написать код. Я хочу создать обычный headshot но чтоб он работал только у тех у кого есть указаные скины в скрипте Link to comment
DakiLLa Posted June 5, 2013 Share Posted June 5, 2013 Korish0074, попробуйте вот так: local nonOpenables = { [290]=true, [291]=true, [292]=true } addEventHandler( "onPlayerDamage", root, function ( attacker, weapon, bodypart ) if bodypart == 9 and nonOpenables[ getElementModel( source ) ] then killPed( source, attacker, weapon, bodypart ) end end ) Link to comment
Korish0074 Posted June 6, 2013 Share Posted June 6, 2013 Korish0074, попробуйте вот так: local nonOpenables = { [290]=true, [291]=true, [292]=true } addEventHandler( "onPlayerDamage", root, function ( attacker, weapon, bodypart ) if bodypart == 9 and nonOpenables[ getElementModel( source ) ] then killPed( source, attacker, weapon, bodypart ) end end ) Debug ничего не пишет, но и человека не убивает выстрелом в голову Link to comment
DakiLLa Posted June 6, 2013 Share Posted June 6, 2013 Если я вас правильно понял, вам нужно чтобы игрок со скином 290, 291 и 292 мог убивать одним выстрелом в голову, верно? Тогда измените source на attacker в 8-й строчке: if bodypart == 9 and nonOpenables[ getElementModel( attacker ) ] then Link to comment
nn03 Posted June 6, 2013 Share Posted June 6, 2013 Подскажите пожалуйста как исправить вот эти ошибки Ошибки [2013-06-06 00:45:30] WARNING: vehiclesystemcarshops\start.lua:22 Bad argument @ 'giveWeapon' [Expected weapon-type at argument 2, got boolean] [2013-06-06 00:45:32] WARNING: vehiclesystemcarshops\server.lua:55: Bad argument @ 'setElementID' [Expected element at argument 1, got boolean] [2013-06-06 00:45:32] ERROR: unzipped\vehiclesystemcarshops\server.lua:62: bad argument #1 to 'ipairs' (table expected, got number) [2013-06-06 00:45:38] ERROR: unzipped\vehiclesystemcarshops\server.lua:25: attempt to concatenate local 'id' (a boolean value) Код Server.lua carShopMarker = createMarker (2133.59,-1149.29, 23.3, "cylinder", 3, 255, 0, 0, 127) carShopMarker2 = createMarker (562, -1270, 16, "cylinder", 2, 255, 0, 0, 127) carShopMarker3 = createMarker (-1954,299,34,"cylinder",2,255,0,0,127) carShopMarker4 = createMarker (-1663,1208,6,"cylinder",2,255,0,0,127) carShopMarker5 = createMarker (1946,2068,10,"cylinder",2,255,0,0,127) createBlipAttachedTo(carShopMarker,55,2,0,255,0,0,0,200) createBlipAttachedTo(carShopMarker2,55,2,0,255,0,0,0,200) createBlipAttachedTo(carShopMarker3,55,2,0,255,0,0,0,200) createBlipAttachedTo(carShopMarker4,55,2,0,255,0,0,0,200) createBlipAttachedTo(carShopMarker5,55,2,0,255,0,0,0,200) addEvent ("viewGUI", true) function markerHit (hitPlayer, matchingDimension) if (source == carShopMarker) or (source == carShopMarker2) or (source == carShopMarker3) or (source == carShopMarker4) or (source == carShopMarker5) then triggerClientEvent ("viewGUI", hitPlayer) end end addEventHandler ("onMarkerHit", getRootElement(), markerHit) addEvent ("carShopCarBuy", true) addEventHandler ("carShopCarBuy", getRootElement(), function(id, cost, name) if (getPlayerMoney (source) >= tonumber(cost)) then outputChatBox ("Bought a " .. name, source, 255, 0, 0, false) outputChatBox ("ID: " .. id, source, 255, 0, 0, false) outputChatBox ("Cost: " .. cost, source, 255, 0, 0, false) takePlayerMoney (source, tonumber (cost)) setAccountData (getPlayerAccount (source), "funmodev2-car", tonumber(id)) setAccountData (getPlayerAccount (source), "funmodev2-paintjob", 3) setAccountData (getPlayerAccount (source), "funmodev2-carupg", 0) else outputChatBox ("You are too poor!", source, 255, 0, 0, false) end end) addEvent ("carSpawn", true) addEvent ("carDestroy", true) function carSpawn () if not (isGuestAccount (getPlayerAccount (source))) and not (isPedInVehicle(source)) then if (getElementData (source, "hisCar")) and (getElementData (source, "hisCar") ~= nil) and (getElementType(getElementData (source, "hisCar")) == "vehicle") then setElementVelocity (getElementData (source, "hisCar"), 0,0,0) local x,y,z = getElementPosition (source) setVehicleRotation (getElementData (source, "hisCar"), 0, 0, 0) setElementPosition (getElementData (source, "hisCar"), x+2,y,z +1) outputChatBox ("Car spawned.", source, 255, 0, 0) elseif not (getElementData (source, "hisCar")) then local accountData = getAccountData (getPlayerAccount (source), "funmodev2-car") if (accountData) then carID = getAccountData (getPlayerAccount (source), "funmodev2-car") x,y,z = getElementPosition (source) vehicle = createVehicle (carID, x +2, y, z +1) setElementID (vehicle, getAccountName (getPlayerAccount(source))) setElementData (source, "hisCar", vehicle) outputChatBox ("Машина стоит рядом с вами!", source, 255, 0, 0) if (getAccountData (getPlayerAccount(source), "funmodev2-carupg")) then local upgrades = nil local upgrades = {} local upgrades = getAccountData (getPlayerAccount(source), "funmodev2-carupg") for i,v in ipairs (upgrades) do addVehicleUpgrade (vehicle, v) end end if (getAccountData (getPlayerAccount(source), "funmodev2-paintjob")) then local paintjob = getAccountData (getPlayerAccount(source), "funmodev2-paintjob") setVehiclePaintjob (vehicle, paintjob) end if (getAccountData (getPlayerAccount(source), "funmodev2-carcolor1")) and (getAccountData (getPlayerAccount(source), "funmodev2-carcolor2")) then local c1 = getAccountData (getPlayerAccount(source), "funmodev2-carcolor1") local c2 = getAccountData (getPlayerAccount(source), "funmodev2-carcolor2") setVehicleColor (vehicle, c1,c2,0,0) end else outputChatBox ("You haven't got a car.", source, 255, 0, 0) end else outputChatBox ("You're already in a car!", source, 255, 0, 0) end end end addEventHandler ("carSpawn", getRootElement(), carSpawn) function carDestroy () if not (isGuestAccount (getPlayerAccount (source))) then if (isPedInVehicle (source)) then if (getElementID(getPedOccupiedVehicle(source)) == getAccountName (getPlayerAccount(source))) then setElementHealth (getElementData (source, "hisCar"), 0) destroyElement (getPedOccupiedVehicle (source)) removeElementData (source, "hisCar") outputChatBox ("Машина Убрана.", source, 255, 0, 0) else outputChatBox ("Это не ваш автомобиль!", source, 255, 0, 0) end elseif (not (isPedInVehicle (source))) and (getElementData (source, "hisCar")) and (getElementData (source, "hisCar") ~= nil) then car=getElementData(source, "hisCar") destroyElement(car) outputChatBox ("Car Destroyed.", source, 255, 0, 0) removeElementData (source, "hisCar") end end end addEventHandler ("carDestroy", getRootElement(), carDestroy) function engineSwitch () if (isPedInVehicle (source)) then local veh = getPedOccupiedVehicle (source) if (getVehicleEngineState (veh) == true) then setVehicleEngineState (veh, false) outputChatBox ("Двигатель заглушен.", source, 255, 0, 0) elseif (getVehicleEngineState (veh) == false) then setVehicleEngineState (veh, true) outputChatBox ("Двигатель заведен.", source, 255, 0, 0) end else outputChatBox ("Это не ваш автомобиль!", source, 255, 0, 0) end end addEvent("engenieSwitch",true) addEventHandler("engenieSwitch",getRootElement(),engineSwitch) function lightsSwitch () if (isPedInVehicle (source)) then local veh = getPedOccupiedVehicle (source) if (getVehicleOverrideLights(veh) ~= 2) then setVehicleOverrideLights(veh, 2) outputChatBox ("Фары включены.", source, 255, 0, 0) elseif (getVehicleOverrideLights(veh) ~= 1) then setVehicleOverrideLights(veh, 1) outputChatBox ("Фары выключены.", source, 255, 0, 0) end else outputChatBox ("Это не ваш автомобиль!", source, 255, 0, 0) end end addEvent("lightsSwitch",true) addEventHandler("lightsSwitch",getRootElement(),lightsSwitch) function lockSwitch () if (isPedInVehicle (source)) then local veh = getPedOccupiedVehicle (source) if not (isVehicleLocked (veh)) then setVehicleLocked (veh, true) setVehicleDoorsUndamageable (veh, true) setVehicleDoorState (veh, 0, 0) setVehicleDoorState (veh, 1, 0) setVehicleDoorState (veh, 2, 0) setVehicleDoorState (veh, 3, 0) outputChatBox ("Автомобиль закрыт.", source, 255, 0, 0) elseif (isVehicleLocked (veh)) then setVehicleLocked (veh, false) setVehicleDoorsUndamageable (veh, false) outputChatBox ("Автомобиль открыт.", source, 255, 0, 0) end else outputChatBox ("Это не ваш автомобиль!", source, 255, 0, 0) end end addEvent("lockSwitch",true) addEventHandler("lockSwitch",getRootElement(),lockSwitch ) addEventHandler ("onVehicleStartEnter", getRootElement(), function(player, seat, jacked, door) if (isVehicleLocked (source) == true) then local mannetjeNaam = getAccountName (getPlayerAccount (player)) local autoNaam = getElementID (source) if (mannetjeNaam == autoNaam) then setVehicleLocked (source, false) outputChatBox ("Автомобиль Открыт!", player, 255, 0, 0, false) end end end) addEventHandler ("onVehicleExplode", getRootElement(), function() local theOwner = getAccountName (getPlayerAccount(getPlayerFromName (getElementID (source)))) if (theOwner) then removeElementData (theOwner, "hisCar") end end) addEventHandler ("onPlayerQuit", getRootElement(), function(quitType, reason, responsibleElement) if (getElementData (source, "hisCar")) then blowVehicle (getElementData (source, "hisCar")) removeElementData (source, "hisCar") end end) addEventHandler( "onResourceStop", getResourceRootElement( getThisResource() ), function () for i,v in ipairs (getElementsByType ("player")) do if (getElementData (v, "hisCar")) then setElementHealth (getElementData (v, "hisCar"), 0) removeElementData (v, "hisCar") end end end ) function destroyOnExplode () setTimer (destroyElement, 2500, 1, source) end addEventHandler ("onVehicleExplode", getRootElement(), destroyOnExplode) Код Start.lua node = xmlLoadFile ("players.xml") function playerLogin (thePreviousAccount, theCurrentAccount, autoLogin) if not (isGuestAccount (getPlayerAccount (source))) then local accountData = getAccountData (theCurrentAccount, "funmodev2-money") if (accountData) then local playerMoney = getAccountData (theCurrentAccount, "funmodev2-money") local playerSkin = getAccountData (theCurrentAccount, "funmodev2-skin") local playerX = getAccountData (theCurrentAccount, "funmodev2-x") local playerY = getAccountData (theCurrentAccount, "funmodev2-y") local playerZ = getAccountData (theCurrentAccount, "funmodev2-z") local playerInt = getAccountData (theCurrentAccount, "funmodev2-int") local playerDim = getAccountData (theCurrentAccount, "funmodev2-dim") local playerWanted = getAccountData (theCurrentAccount, "funmodev2-wantedlevel") local playerWeaponID = getAccountData (theCurrentAccount, "funmodev2-weaponID") local playerWeaponAmmo = getAccountData (theCurrentAccount, "funmodev2-weaponAmmo") spawnPlayer (source, playerX, playerY, playerZ +1, 0, playerSkin, playerInt, playerDim, spawnTeam) setTimer (setPlayerTeam, 500, 1, source, spawnTeam) setPlayerMoney (source, playerMoney) setTimer (setPlayerWantedLevel, 500, 1, source, playerWanted) setTimer (giveWeapon, 500, 1, source, playerWeaponID, playerWeaponAmmo, true) setCameraTarget (source, source) fadeCamera(source, true, 2.0) else spawnPlayer (source, 2000.55, 1526.25, 14.6171875, 0, math.random (0, 288), 0, 0, spawnTeam) setTimer (setPlayerTeam, 500, 1, source, spawnTeam) setPlayerMoney (source, 5000) setCameraTarget (source, source) fadeCamera(source, true, 2.0) end end end addEventHandler ("onPlayerLogin", getRootElement(), playerLogin) function onQuit (quitType, reason, responsibleElement) if not (isGuestAccount (getPlayerAccount (source))) then account = getPlayerAccount (source) if (account) then local x,y,z = getElementPosition (source) setAccountData (account, "funmodev2-money", tostring (getPlayerMoney (source))) setAccountData (account, "funmodev2-skin", tostring (getPedSkin (source))) setAccountData (account, "funmodev2-x", x) setAccountData (account, "funmodev2-y", y) setAccountData (account, "funmodev2-z", z) setAccountData (account, "funmodev2-int", getElementInterior (source)) setAccountData (account, "funmodev2-dim", getElementDimension (source)) setAccountData (account, "funmodev2-wantedlevel", getPlayerWantedLevel (source)) setAccountData (account, "funmodev2-wantedID", getPedWeapon (source)) setAccountData (account, "funmodev2-wantedAmmo", getPedTotalAmmo (source)) end end end addEventHandler ("onPlayerQuit", getRootElement(), onQuit) function onWasted(totalAmmo, killer, killerWeapon, bodypart, stealth) if not( isGuestAccount (getPlayerAccount(source)) ) then local theWeapon = getPedWeapon (source) local weaponAmmo = getPedTotalAmmo (source) fadeCamera (source, false) setTimer (spawnPlayer, 1000, 1, source, 1607.35, 1816.54, 10.82, 0, getPedSkin (source), 0, 0, spawnTeam) setTimer (setPlayerTeam, 1500, 1, source, spawnTeam) setTimer (setCameraTarget, 1250, 1, source, source) setTimer (fadeCamera, 2000, 1, source, true) setTimer (giveWeapon, 2000, 1, source, theWeapon, weaponAmmo, true) end end addEventHandler ("onPlayerWasted", getRootElement(), onWasted) Link to comment
Ruga Posted June 6, 2013 Share Posted June 6, 2013 отредактируйте и выложите с номерами строк, ошибки аргументов никто исправлять не будет ища по пальцам где строка находится, и вам уже дали хороший ответ вот тут https://forum.multitheftauto.com/viewtopic.php?f=141&t=60216 Link to comment
Memory Posted June 11, 2013 Share Posted June 11, 2013 Привет всем, скажите как можно сделать следущее: вот допустим есть функция function checkMoney() if getPlayerMoney(source) == 1000 then triggerClientEvent(source, "UnlockAchievement") end if getPlayerMoney(source) == 10000 then ... end end Логично, что проверку на ровно 1000 глупо ставить, потому что было у игрока 990 заработал ещё 50 и всё он "пролетел". Если сделать > 1000 and < 10000, то trigger будет срабатывать много раз, а не один. Так как можно решить эту задачу? Link to comment
Kenix Posted June 11, 2013 Share Posted June 11, 2013 Присваивай открытые достижения через элемент дату. Функции для работы: setElementData getElementData Link to comment
TheNormalnij Posted June 14, 2013 Share Posted June 14, 2013 удалено Блин, ну вот как обычно, когда начинаю у кого-то спрашивать, сам нахожу ошибку ))) Link to comment
Ruga Posted June 14, 2013 Share Posted June 14, 2013 (edited) Решил свою проблему)) Edited June 14, 2013 by Guest 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