_Vincent_ Posted August 7, 2013 Share Posted August 7, 2013 Синтаксис - "оформление" алгоритма. Если понимаешь, как строить алгоритмы, то после чтения пары манов, наверное, поймешь и как спроецировать их на конкретный язык?.. А насчет функций - наверное, название с set "кошерней". Дескать, вписывается в общую концепцию и сразу понятно из этого set какого рода эта функция. А ту мб со временем объявят устаревшей. Но это все, опять же, ИМХО. Link to comment
gold4iter Posted August 8, 2013 Share Posted August 8, 2013 Что то я не нашёл евента ОнплеерДеаз. Нашёл как создать бота как ему привязать анимку но как сделать что бы это было при смерти. Link to comment
DakiLLa Posted August 8, 2013 Share Posted August 8, 2013 Если бот (ped), то тогда нужен эвент onPedWasted. Link to comment
TheNormalnij Posted August 8, 2013 Share Posted August 8, 2013 Ему надо именно onPlayerWasted Link to comment
gold4iter Posted August 8, 2013 Share Posted August 8, 2013 Ну как то так) Не знаю будет ли работать addeventhandlier("OnPlayerWasted",root,"CreatePed") первый евент после каникул. А так лень лень и лень. И тупые игры. Буду заниматся программированием и статейками с я люблю луа. Получше сайтов не знаю. Link to comment
Kenix Posted August 8, 2013 Share Posted August 8, 2013 Конечно не будет работать, все события в мта начинаются с малой буквы, а не с большой. Третий аргумент у функции addEventHandler это функция-обработчик, а не строка. Читай вики перед тем как писать код. Сама функция у тебя написана неверно. https://wiki.multitheftauto.com/ Link to comment
gold4iter Posted August 8, 2013 Share Posted August 8, 2013 (edited) Как говорится своими руками) Не знал про это. Я так понял евент вызывается после функции? Вот как то так не судите 1 раз своей рукой пишу. function CreatePed ped1=createPed(45,x,y,z) setPedAnimation(ped1,"ped","KILL_PARTIAL") end addEventHandlier("OnPlayerWasted",root,CreatePed) Я не знаю только как вычислять координаты игрока который умер. Сейчас у меня бот не будет создаватся. Так как координат у него нету. Прошлый вопрос с регистрацией остался в силе. Наконец то на компьютере --[[ Basic Roleplay Gamemode ~ Server-side functions for login Created by Socialz ]]-- -- Miniatures local cRoot = getRootElement() local cThis = getThisResource() local cThisRoot = getResourceRootElement(cThis) -- Configurations (modifyable) local cx1, cy1, cz1 = 1262, -1154, 96 -- Camera slider part 1 position local cpx1, cpy1, cpz1 = 1190, -1195, 58 -- Camera slider part 1 point local cx2, cy2, cz2 = 512.2, -1263.57, 32.53 -- Camera slider part 2 position local cpx2, cpy2, cpz2 = 542.16, -1287.07, 17.24 -- Camera slider part 2 point local cx3, cy3, cz3 = 1818.96, -1678.42, 17.77 -- Camera slider part 3 position local cpx3, cpy3, cpz3 = 1831.63, -1679.9, 13.54 -- Camera slider part 3 point local cx4, cy4, cz4 = 1517.72, -1724.66, 38.05 -- Camera slider part 4 position local cpx4, cpy4, cpz4 = 1471.68, -1750.05, 15.44 -- Camera slider part 4 point local cx5, cy5, cz5 = 951.71, -1122.66, 44.24 -- Camera slider part 5 position local cpx5, cpy5, cpz5 = 890.43, -1092.08, 24.3 -- Camera slider part 5 point local cx6, cy6, cz6 = 1051.84, -1157.98, 35.98 -- Camera slider part 6 position local cpx6, cpy6, cpz6 = 1028.54, -1121.54, 28.4 -- Camera slider part 6 point local cx7, cy7, cz7 = 1924.13, -1767.91, 88.08 -- Camera slider part 7 position local cpx7, cpy7, cpz7 = 1765.62, -1864.89, 13.57 -- Camera slider part 7 point local sx, sy, sz = 1743, -1861, 14 -- Original spawnpoint local rx, ry, rz = 1183, -1323, 14 -- Respawnpoint local rp_startcash = 500 -- Starting wallet cash local rp_startbankcash = 1000 -- Starting bank cash local regR, regG, regB = 255, 255, 255 -- Regular nametag color local admR, admG, admB = 255, 255, 0 -- Admin nametag color local notification_welcome = "Добро пожаловать на Playground Roleplay." -- Notification: welcometext local notification_regular = "Удачно залогинились." -- Notification: ACL group note on log in, regular account local notification_trialadmin = "Вы залогинились как модератор." -- Notification: ACL group note on log in, trial administrator local notification_gameadmin = "Вы залогинились как игровой администратор." -- Notification: ACL group note on log in, game administrator local notification_leadadmin = "Вы залогинились как супермодератор." -- Notification: ACL group note on log in, lead administrator local notification_owner = "Вы залогинились как главный администратор." -- Notification: ACL group note on log in, server owner local notification_password = "Если вы хотите сменить свой пароль нажмите /changepass" -- Notification: how to change password local notification_loggedout = "Вы вышли. Пожалуйста зайдите снова." -- Notification: forced logged out local warning_password_notloggedin = "Вы должны войти прежде чем менять свой пароль." -- Warning: not logged in when changing password local warning_password_invalidlenght = "Ваш новый пароль должен быть больше 5 символов!" -- Warning: invalid lenght when changing password local warning_password_invalid = "Пароль неверен." -- Warning: invalid password local warning_logout = "Выйти сейчас невозможно." -- Warning: logging out disabled local rp_hospitalMoney = 75 -- Hospital treatment's payment local rp_notification_hospital_01 = "Вас спасли медики.." -- Treatment info after respawn local rp_notification_hospital_02 = "Вы заплатили $" .. rp_hospitalMoney .. " за лечение." -- Treatment info after respawn local releasepoint_x = 0 local releasepoint_y = 0 local releasepoint_z = 0 local releasepoint_interior = 0 local releasepoint_dimension = 0 -- Functions addEventHandler("onPlayerJoin", cRoot, function() for i=1,50 do outputChatBox(" ", source) end outputChatBox(notification_welcome, source, 255, 255, 0, true) outputChatBox("Что бы продолжить зайдите.", source, 255, 255, 255, true) outputChatBox(" ", source, 255, 255, 255, true) showPlayerHudComponent(source, "radar", false) showPlayerHudComponent(source, "area_name", false) setElementData(source, "slider", 0) firstSlider(source) end ) function firstSlider(source) if getElementData(source, "slider") ~= 1 then fadeCamera(source, false, 1.0) setTimer(function() setCameraMatrix(source, cx1, cy1, cz1, cpx1, cpy1, cpz1) fadeCamera(source, true, 1.0) end, 1000, 1) setTimer(secondSlider, 4000, 1, source) end end function secondSlider(source) if getElementData(source, "slider") ~= 1 then fadeCamera(source, false, 1.0) setTimer(function() setCameraMatrix(source, cx2, cy2, cz2, cpx2, cpy2, cpz2) fadeCamera(source, true, 1.0) end, 1000, 1) setTimer(thirdSlider, 4000, 1, source) end end function thirdSlider(source) if getElementData(source, "slider") ~= 1 then fadeCamera(source, false, 1.0) setTimer(function() setCameraMatrix(source, cx3, cy3, cz3, cpx3, cpy3, cpz3) fadeCamera(source, true, 1.0) end, 1000, 1) setTimer(fourthSlider, 4000, 1, source) end end function fourthSlider(source) if getElementData(source, "slider") ~= 1 then fadeCamera(source, false, 1.0) setTimer(function() setCameraMatrix(source, cx4, cy4, cz4, cpx4, cpy4, cpz4) fadeCamera(source, true, 1.0) end, 1000, 1) setTimer(fifthSlider, 4000, 1, source) end end function fifthSlider(source) if getElementData(source, "slider") ~= 1 then fadeCamera(source, false, 1.0) setTimer(function() setCameraMatrix(source, cx5, cy5, cz5, cpx5, cpy5, cpz5) fadeCamera(source, true, 1.0) end, 1000, 1) setTimer(sixthSlider, 4000, 1, source) end end function sixthSlider(source) if getElementData(source, "slider") ~= 1 then fadeCamera(source, false, 1.0) setTimer(function() setCameraMatrix(source, cx6, cy6, cz6, cpx6, cpy6, cpz6) fadeCamera(source, true, 1.0) end, 1000, 1) setTimer(seventhSlider, 4000, 1, source) end end function seventhSlider(source) if getElementData(source, "slider") ~= 1 then fadeCamera(source, false, 1.0) setTimer(function() setCameraMatrix(source, cx7, cy7, cz7, cpx7, cpy7, cpz7) fadeCamera(source, true, 1.0) end, 1000, 1) setTimer(firstSlider, 4000, 1, source) end end function brpLogin(player, username, password) local account = getAccount(username, password) if account ~= false then if logIn(player, account, password) == true then local acc = getPlayerAccount(player) if isObjectInACLGroup("user." .. getAccountName(acc), aclGetGroup("Trial Administrator")) then outputChatBox(notification_trialadmin, player, 200, 200, 0, false) setElementData(player, "admin.level", 1) setPlayerNametagColor(player, admR, admG, admB) elseif isObjectInACLGroup("user." .. getAccountName(acc), aclGetGroup("Game Administrator")) then outputChatBox(notification_gameadmin, player, 200, 200, 0, false) setElementData(player, "admin.level", 2) setPlayerNametagColor(player, admR, admG, admB) elseif isObjectInACLGroup("user." .. getAccountName(acc), aclGetGroup("Lead Administrator")) then outputChatBox(notification_leadadmin, player, 200, 200, 0, false) setElementData(player, "admin.level", 3) setPlayerNametagColor(player, admR, admG, admB) elseif isObjectInACLGroup("user." .. getAccountName(acc), aclGetGroup("Server Owner")) then outputChatBox(notification_owner, player, 200, 200, 0, false) setElementData(player, "admin.level", 4) setPlayerNametagColor(player, admR, admG, admB) else outputChatBox(notification_regular, player, 220, 220, 0, false) setElementData(player, "admin.level", 0) setPlayerNametagColor(player, regR, regG, regB) end setElementData(player, "accountname", getAccountName(acc)) setElementData(player, "player.loggedin", 1) outputChatBox(notification_password, player, 255, 255, 255, false) triggerClientEvent(player, "hideLoginWindow", cRoot) setElementData(player, "slider", 1) fadeCamera(player, false, 2.0) if isElementFrozen(player) then setElementFrozen(player, false) end setTimer(function() local money = getAccountData(acc, "money") local bank = getAccountData(acc, "bank") local faction = getAccountData(acc, "faction") local fname = getAccountData(acc, "fname") local factionleader = getAccountData(acc, "factionleader") local health = getAccountData(acc, "health") local armor = getAccountData(acc, "armor") local model = getAccountData(acc, "model") local points = getAccountData(acc, "points") local interior = getAccountData(acc, "interior") local dimension = getAccountData(acc, "dimension") local x = getAccountData(acc, "posx") local y = getAccountData(acc, "posy") local z = getAccountData(acc, "posz") local rx = getAccountData(acc, "rotx") local ry = getAccountData(acc, "roty") local rz = getAccountData(acc, "rotz") local cuffed = getAccountData(acc, "cuffed") local arrested = getAccountData(acc, "arrested") local arrestedtime = getAccountData(acc, "arrested-remainingtime") local materials = getAccountData(acc, "materials") if cuffed == true then setElementData(player, "police.cuffed", true) toggleControl(player, "fire", false) toggleControl(player, "next_weapon", false) toggleControl(player, "previous_weapon", false) toggleControl(player, "sprint", false) toggleControl(player, "aim_weapon", false) toggleControl(player, "handbrake", false) toggleControl(player, "vehicle_fire", false) toggleControl(player, "vehicle_secondary_fire", false) toggleControl(player, "vehicle_left", false) toggleControl(player, "vehicle_right", false) toggleControl(player, "steer_forward", false) toggleControl(player, "steer_back", false) end if arrested == true then setElementData(player, "police.arrested", true) outputChatBox("Твой аррест ещё не окончен.", player, 120, 120, 255, false) setTimer(function(player) if getElementData(player, "police.arrested") then setElementPosition(player, releasepoint_x, releasepoint_y, releasepoint_z) setElementInterior(player, releasepoint_interior) setElementDimension(player, releasepoint_dimension) outputChatBox("Вас отпустили - пожалуйста не нарушайте закон.", player, 120, 120, 255, false) outputServerLog("[FACTIONS] [AUTO/RELEASE]: " .. getPlayerName(player) .. " был отпущен из тюрьмы автоматически.") removeElementData(player, "police.arrested") setAccountData(acc, "arrested", false) setAccountData(acc, "arrested-remainingtime", 0) end end, arrestedtime, 1, Edited August 8, 2013 by Guest Link to comment
Ruga Posted August 8, 2013 Share Posted August 8, 2013 (edited) function CreatePed () local x , y , z = getElementPosition(source) -- ведь нужны координаты источника, кто умер. local skin = getElementModel ( source ) -- я подумал будет лучше если бот, будет с тем же скином, что и убитый ? local ped = createPed( skin , x , y , z ) setPedAnimation(ped ,"ped","KILL_PARTIAL") end addEventHandlier("onPlayerWasted",root,CreatePed) советую к прочтению https://wiki.multitheftauto.com/wiki/OnPlayerWasted Edited August 8, 2013 by Guest Link to comment
TheNormalnij Posted August 10, 2013 Share Posted August 10, 2013 Тут кто-нибудь знает как создать свой edf с колшейпами и радарареной. Они нужны только для визуального представления зоны. В мане на вики есть их упоминания, но как это реализовать хз. Если что-то и получалось сделать, то только чтобы все это прописывать в редакторе самим. Хотелось бы, чтобы хотя бы позиция ставилась корректно, с минимальными затратами времени. Link to comment
nikitafloy Posted August 11, 2013 Share Posted August 11, 2013 Привет всем. Что я должен использовать для DM - зоны? Человек убивает другого - 2 player, первый получает деньги, у второго отнимаются. function onPlayerWastedDM ( attacker ) if ( attacker ) then if ( getElementType ( attacker ) == "player" ) then givePlayerMoney( attacker, 7500 ) end end end addEventHandler( "onPlayerWastedDM", getRootElement( ), function() setTimer( spawnPlayer, 2000, 1, player, 1607, 1826.6, 10.8 ) takePlayerMoney ( player, 7500 ) end ) Не работает. Link to comment
Ruga Posted August 11, 2013 Share Posted August 11, 2013 onPlayerWastedDM -- откуда этот эвент? боюсь спрашивать Link to comment
nikitafloy Posted August 11, 2013 Share Posted August 11, 2013 (edited) onPlayerWastedDM -- откуда этот эвент? боюсь спрашивать Ай-Яй, проглядел. Сейчас попробуем. Откуда мне брать аргумент убитого? Edited August 11, 2013 by Guest Link to comment
Elengar Posted August 11, 2013 Share Posted August 11, 2013 Привет всем. Что я должен использовать для DM - зоны?Человек убивает другого - 2 player, первый получает деньги, у второго отнимаются. function onPlayerWastedDM ( attacker ) if ( attacker ) then if ( getElementType ( attacker ) == "player" ) then givePlayerMoney( attacker, 7500 ) end end end addEventHandler( "onPlayerWastedDM", getRootElement( ), function() setTimer( spawnPlayer, 2000, 1, player, 1607, 1826.6, 10.8 ) takePlayerMoney ( player, 7500 ) end ) Не работает. Делай колшейп в дм зоне createColCuboid И при убийстве/смерти проверяй, был ли тот игрок в колшейпе isElementWithinColShape Link to comment
nikitafloy Posted August 11, 2013 Share Posted August 11, 2013 Привет всем. Что я должен использовать для DM - зоны?Человек убивает другого - 2 player, первый получает деньги, у второго отнимаются. function onPlayerWastedDM ( attacker ) if ( attacker ) then if ( getElementType ( attacker ) == "player" ) then givePlayerMoney( attacker, 7500 ) end end end addEventHandler( "onPlayerWastedDM", getRootElement( ), function() setTimer( spawnPlayer, 2000, 1, player, 1607, 1826.6, 10.8 ) takePlayerMoney ( player, 7500 ) end ) Не работает. Делай колшейп в дм зоне createColCuboid И при убийстве/смерти проверяй, был ли тот игрок в колшейпе isElementWithinColShape С колшейпами я не разобрался до конца. Link to comment
Elengar Posted August 11, 2013 Share Posted August 11, 2013 С колшейпами я не разобрался до конца. А что с ими разбиратся ? Почитай на вики про функцию, там все есть. Я бы помог, но извини, я не ванга, и не знаю где тебе нужна дм зона Link to comment
nikitafloy Posted August 11, 2013 Share Posted August 11, 2013 С колшейпами я не разобрался до конца. А что с ими разбиратся ? Почитай на вики про функцию, там все есть. Я бы помог, но извини, я не ванга, и не знаю где тебе нужна дм зона Мне нужно интуитивно выставлять ширину, высону и длину? Или же найти центр и ее стороны, затем найти их разницу? Как быть с onPlayerWasted? Мне нужно как-то выдрать игрока, который был убит. Проверьте меня, если что: local DMzone = createColCuboid ( 2617.9, 2746.5, 10.8, 52, 80, 252 ) local prove = isElementWithinColShape ( player, DMzone ) function shapeHit ( player ) outputChatBox ( getPlayerName ( player ) .. " вошел в зону DM. (/dm)" ) end addEventHandler ( "onColShapeHit", DMzone, shapeHit ) function onPlayerWasted ( attacker ) if ( attacker ) then if ( getElementType ( attacker ) == "player" ) then prove = prove and getElementDimension ( attacker ) == getElementDimension( DMzone ) if prove then givePlayerMoney( attacker, 7500 ) end end end end addEventHandler( "onPlayerWasted", getRootElement( ), function( ) setTimer( spawnPlayer, 2000, 1, player, 1607, 1826.6, 10.8 ) takePlayerMoney ( player, 7500 ) end ) Link to comment
TheNormalnij Posted August 11, 2013 Share Posted August 11, 2013 Вставляешь в клиентский скрипт setDevelopmentMode ( true ) или используй ресурс runcode /crun setDevelopmentMode ( true ) После любого из этих действий введи showcol 1 тогда ты увидишь все свои колшейпы. Колшейп кубоид создается по трем точкам координатами начала, это нижняя юго-западная точка, и шириной, длинной, высотой. Если по моему вопросу никто ничего не знает, то дайте знать, тогда я сам сделаю свой редактор для этого, или создам скрипт в редакторе. Link to comment
Scripting Moderators Sarrum Posted August 11, 2013 Scripting Moderators Share Posted August 11, 2013 Может быть это поможет: https://community.multitheftauto.com/in ... ls&id=3804 Link to comment
TheNormalnij Posted August 11, 2013 Share Posted August 11, 2013 Спасибо, но это не то. Как я писал, мне это надо для визуального представления информации, наравне с радарареной. Вот например костылями сгенерированая строка в карту: <monsterspawn id="monsterspawn (1)" interior="0" levelmin="3"posX="-86.74609375" posY="1636.9365234375" sizeX="489.08984375" sizeY="489.7216796875"></monsterspawn> Я думаю, тому, кто с этим будет работать не понравится все делать вручную или через костыли )) Link to comment
nikitafloy Posted August 11, 2013 Share Posted August 11, 2013 (edited) Спасибо, всё очень сильно помогло, осталось последнее - получение денег. Не совсем понимаю, что творится ниже в 'onKillDM', но тем не менее. Вроде все ОК, дэбаг молчит. Иногда ругается на 3 строку, что она должна быть 'boolean'. Но деньги после убийства не передаются. Наверняка легко будет выследить данную ошибку, я пока что-то не могу. local DMzone = createColCuboid ( 2495, 2616, 9.5, 255, 243, 80 ) -- создаю кубойд function shapeHit ( player ) -- типа счетчика outputChatBox ( getPlayerName ( player ) .. " вошел в зону DM. (/dm)" ) end addEventHandler ( "onColShapeHit", DMzone, shapeHit ) function onKillDM ( ammo, source, weapon, bodypart ) -- имитация onPlayerWasted, чтобы определить кто кого убил и что делается local prove = isElementWithinColShape ( source, DMzone ) -- элемент внутри формы if ( source ) then -- если это тот элемент, то if ( getElementType ( source ) == "player" ) then -- Если элемент найден как игрок, то prove = prove and getElementDimension ( source ) == getElementDimension( DMzone ) -- проверка - элемент внутри формы и они находится на территории друг друга (Не в разных местах) if prove then -- если все ОК, то - вывод сообщения и дать игроку деньги outputChatBox ( "Все ОК." ) givePlayerMoney( source, 7500 ) end end end end addEventHandler("onPlayerWasted", getRootElement(), onKillDM) -- при убийстве игрока (В этой части рулит 'killer') Edited August 11, 2013 by Guest Link to comment
Other Languages Moderators Disinterpreter Posted August 11, 2013 Other Languages Moderators Share Posted August 11, 2013 Спасибо, всё очень сильно помогло, осталось последнее - получение денег. Не совсем понимаю, что творится ниже в 'onKillDM', но тем не менее. Вроде все ОК, дэбаг молчит. Иногда ругается на 3 строку, что она должна быть 'boolean'. Но деньги после убийства не передаются. Наверняка легко будет выследить данную ошибку, я пока что-то не могу. local DMzone = createColCuboid ( 2495, 2616, 9.5, 255, 243, 80 ) function shapeHit ( player ) outputChatBox ( getPlayerName ( player ) .. " вошел в зону DM. (/dm)" ) end addEventHandler ( "onColShapeHit", DMzone, shapeHit ) function onKillDM ( ammo, source, weapon, bodypart ) local prove = isElementWithinColShape ( source, DMzone ) if ( source ) then if ( getElementType ( source ) == "player" ) then prove = prove and getElementDimension ( source ) == getElementDimension( DMzone ) if prove then outputChatBox ( "Все ОК." ) givePlayerMoney( source, 7500 ) end end end end addEventHandler("onPlayerWasted", getRootElement(), onKillDM) viewtopic.php?f=141&t=40703 Link to comment
nikitafloy Posted August 11, 2013 Share Posted August 11, 2013 Спасибо, всё очень сильно помогло, осталось последнее - получение денег. Не совсем понимаю, что творится ниже в 'onKillDM', но тем не менее. Вроде все ОК, дэбаг молчит. Иногда ругается на 3 строку, что она должна быть 'boolean'. Но деньги после убийства не передаются. Наверняка легко будет выследить данную ошибку, я пока что-то не могу. local DMzone = createColCuboid ( 2495, 2616, 9.5, 255, 243, 80 ) function shapeHit ( player ) outputChatBox ( getPlayerName ( player ) .. " вошел в зону DM. (/dm)" ) end addEventHandler ( "onColShapeHit", DMzone, shapeHit ) function onKillDM ( ammo, source, weapon, bodypart ) local prove = isElementWithinColShape ( source, DMzone ) if ( source ) then if ( getElementType ( source ) == "player" ) then prove = prove and getElementDimension ( source ) == getElementDimension( DMzone ) if prove then outputChatBox ( "Все ОК." ) givePlayerMoney( source, 7500 ) end end end end addEventHandler("onPlayerWasted", getRootElement(), onKillDM) viewtopic.php?f=141&t=40703 Извиняюсь, исправлено. Link to comment
Other Languages Moderators Disinterpreter Posted August 11, 2013 Other Languages Moderators Share Posted August 11, 2013 Я про табуляцию. 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