Jump to content

rafull6

Members
  • Posts

    141
  • Joined

  • Last visited

Everything posted by rafull6

  1. можешь простой примерчик показать как? а то я совсем не въеду с чего начать
  2. Это понятно, но вопрос в том как определить тот автомобиль, который был создан игроком, для того что бы потом его удалить. Создавать зону какую то типа colshape или что?
  3. Ребята, подскажите как поставить лимит на спавн автомобилей, пожалуйста! Сделал небольшой скрипт. Идея его заключается в том, что игрок заходит на маркер, отрывается окно с кнопкой, при нажатии на которую на определенных координатах появляется автомобиль. Как поставить лимит на спавн автомобиля, что бы при повторном нажатии на кнопку заспавненый ранее автомобиль удалялся и появлялся новый ( как в ресурсе freeroam.) Подскажите пожалуйста. Вот код моего скрипта: сервер: function destroyVehicle(vehicle) local check=false for i,player in ipairs(getElementsByType("player")) do if getPlayerOccupiedVehicle(player)==vehicle then check=true end end if check==false then destroyElement(vehicle) end end function exitVehicle(vehicle) setTimer(destroyVehicle,300000,1,vehicle) end addEventHandler("onPlayerVehicleExit",getRootElement(),exitVehicle) function vehexplode () destroyElement(source) end addEventHandler("onVehicleExplode",root, vehexplode) function taxiSp ( ) createVehicle ( 420, 1629.91, -1107.53, 27, 0, 0, 90 ) end addEvent( "taxiSpawn", true ) клиент: taxismark=createMarker(1629.62,-1117.05,23,"cylinder",3,230,250,0,50) addEventHandler( "onClientMarkerHit",taxismark, function( hitElement, matchingDimension ) qsWindow = guiCreateWindow( 0.3584,0.2568,0.2500,0.256," ",true ) -- guiCreateStaticImage( 0.05, 0.12, 1.4, 0.6, "/img/taxicon.png",true,qsWindow) buttonYes = guiCreateButton( 0.05,0.45,0.9,0.3,"Спавн [Taxi]",true,qsWindow ) buttonNo = guiCreateButton( 0.05,0.79,0.9,0.15,"закрыть",true,qsWindow ) guiSetVisible( qsWindow,false ) if (hitElement == localPlayer) and (getElementModel ( localPlayer ) == 15) then showCursor( true ) guiSetVisible( qsWindow,not guiGetVisible( qsWindow ) ) addEventHandler ( "onClientGUIClick", buttonYes, function( ) showCursor( false ) guiSetVisible( qsWindow,false ) triggerServerEvent( "taxiSpawn", localPlayer ) --outputChatBox( "`Вы захватили банк вы должны продержаться 5 минут.",255,0,0 ) end ,false ) addEventHandler ( "onClientGUIClick", buttonNo, function ( ) showCursor( false ) guiSetVisible( qsWindow,false ) end ,false ) end end
  4. Подскажите пожалуйста как реализовать скрипт который будет показывать уровень розыска игрока возле его имени (не в scoreboard, а прямо над головой возле ника,типа examplenick[3] где 3 - это уровень розыска. Вот мои мои наброски скрипта. К сожалению не рабочие((( Помогите пожалуйста function playerLogin ( thePlayer ) local wantedLvl = getPlayerWantedLevel ( thePlayer ) if wantedLvl == 0 then setPlayerNametagText (thePlayer, getPlayerName .. "[0]" (thePlayer)) else setPlayerNametagText (thePlayer, getPlayerName .. "[wantedLvl]" (thePlayer)) end end addEventHandler ("onPlayerLogin", getRootElement(), playerLogin) Идея в том что бы уровень розыска показывался прямо надо головой возле ника игрока.
  5. works great! Thank you, Kenix
  6. Guys, help me, please, correct my code. I tried to fix it for an hour with noi results I have triggerServerEvent problem. Debugscript going crazy with all mistakes! Here is my code: debugscript errors: http://s017.radikal.ru/i427/1202/e8/9a0d3f560680.jpg Serverside: ----- pilot ------- function pilotjob ( thePlayer ) if (getPlayerNametagText (thePlayer) == "[COP]" .. getPlayerName (thePlayer)) then setPlayerNametagText (thePlayer, getPlayerName (thePlayer)) end setPedSkin ( thePlayer, 61 ) takeWeapon (thePlayer, 14) takeWeapon (thePlayer, 23) takeWeapon (thePlayer, 3) setPlayerTeam ( thePlayer, teampilot ) setPlayerNametagColor (thePlayer, 148, 0, 211 ) --takeAllWeapons ( thePlayer ) setPedArmor ( thePlayer, 0 ) end addEvent("pilotJobx", true) addEventHandler("pilotJobx", getRootElement(), pilotjob) --------------------- Clientside: pilotmark=createMarker(1953.82,-2177.61,12.65,"cylinder",1,148,0,211,70) addEventHandler( "onClientMarkerHit",pilotmark, function( hitElement, matchingDimension ) if hitElement == localPlayer then showCursor( true ) xWindow = guiCreateWindow(0.3184,0.2568,0.2500,0.356,"",true) buttonYes = guiCreateButton(0.03,0.86,0.45,0.10,"yes!",true,xWindow) buttonNo = guiCreateButton(0.505,0.86,0.45,0.10,"no",true,xWindow) --guiCreateStaticImage (0.05, 0.2, 0.9, 0.5,"/bankrob.png",true,xWindow) addEventHandler ( "onClientGUIClick", buttonYes, function( ) showCursor( false ) guiSetVisible( xWindow,false ) triggerServerEvent( "pilotJobx", root) --triggerServerEvent("ServerPlaySoundRobbery",localPlayer) ---outputChatBox( "`Вы захватили банк вы должны продержаться 5 минут.",255,0,0 ) end ,false ) addEventHandler ( "onClientGUIClick", buttonNo, function ( ) showCursor( false ) guiSetVisible( xWindow,false ) end ,false ) end end )
  7. Hey guys. Today I've downloaded one nice resource from community. It is BUS JOB https://community.multitheftauto.com/index.php?p=resources&s=details&id=2588. Here is my problem: this script work's perfectly except one thing. When you driving to the markets alone (there is no truck workers on the server except you) it's pretty good, but when there is two or more truck drivers - markets appear once for all drivers, and if one of the drivers takes the marker, it's disappears for other truck drivers. So, drivers are stealing from each other this markers. That's sucks. Please help me to fix this problem so, that each player would have personal markers, that will be visible only for him. Here is the code: Server: local rootElement = getRootElement() local trucks = {[403] = true, [514] = true, [515] = true} local truckTable = { [1]={1812.65198, -1889.86047, 13.41406}, [2]={1825.22791, -1635.03711, 13.38281}, [3]={1855.01685, -1430.47449, 13.39063}, [4]={1732.81580, -1296.87122, 13.44294}, [5]={1473.19226, -1295.77124, 13.48315}, [6]={1443.60376, -1498.26660, 13.37650}, [7]={1426.37280, -1716.12439, 13.38281}, [8]={1315.06909, -1656.43799, 13.38281}, [9]={1359.06250, -1432.39734, 13.38281}, [10]={1169.82983, -1392.34473, 13.41728}, [11]={930.76508, -1392.92627, 13.26561}, [12]={815.24756, -1317.91345, 13.44460}, [13]={585.04199, -1320.53748, 13.40609}, [14]={526.99365, -1624.20361, 16.63225}, } function getNewTruckLocation(thePlayer, ID) local x, y, z = truckTable[ID][1], truckTable[ID][2], truckTable[ID][3] triggerClientEvent(thePlayer,"truck_set_location",thePlayer,x,y,z) end function onVehicleEnter(thePlayer) if not trucks[getElementModel(source)] then return end if not getPlayerTeam(thePlayer) then return end if getTeamName(getPlayerTeam(thePlayer)) == "Truckers" then local x, y, z = getNewTruckLocation(thePlayer, 1) setElementData(thePlayer,"truckData",1) end end addEventHandler("onVehicleEnter",rootElement,onVehicleEnter) addEvent("truck_finish",true) addEventHandler("truck_finish",rootElement, function (client) if not isPedInVehicle(client) then return end if not trucks[getElementModel(getPedOccupiedVehicle(client))] then return end givePlayerMoney(client, 100) if #truckTable == tonumber(getElementData(client,"truckData")) then setElementData(client,"truckData",1) else setElementData(client,"truckData",tonumber(getElementData(client,"truckData"))+1) end getNewTruckLocation(client, tonumber(getElementData(client,"truckData"))) end) Server local client = getLocalPlayer( ) local rootElement = getRootElement() local truckmarker = nil local truckblip = nil addEvent("truck_set_location",true) addEventHandler("truck_set_location",rootElement, function (x, y, z) truckmarker = createMarker(tostring(x), tostring(y), tostring(z)-1, "cylinder", 10, 184, 57, 14, 170) truckblip = createBlipAttachedTo( truckmarker, 19 ) addEventHandler("onClientMarkerHit",truckmarker,onTruckStopHit) end) function onTruckStopHit(hitPlayer) if not hitPlayer == client then return end triggerServerEvent("truck_finish",client,client) if isElement(truckblip) then destroyElement(truckblip) end if isElement(truckmarker) then removeEventHandler("onClientMarkerHit",truckmarker,onTruckStopHit) destroyElement(truckmarker) end end addEventHandler("onClientVehicleExit",rootElement, function () if isElement(marker) then removeEventHandler("onClientMarkerHit",truckmarker,onTruckStopHit) destroyElement(truckmarker) end if isElement(truckblip) then destroyElement(truckblip) end end)
  8. ого... А какое тогда максимальное хп автомобиля?ъ Update: нашел) это 1000) исправил) Все работает отлично)
  9. Не чинит В чат пишет "Эта машина не нуждается в ремонте..." и все...
  10. Написал код на фикс автомобилей механиком: function fixCar (player,command) skin = getPedSkin (player) if ( skin == 50 ) then local vehicle = getPedOccupiedVehicle(player) local vehicleHealth = getElementHealth ( playerVehicle ) if (vehicle) and ( vehicleHealth < 80 ) then fixVehicle(vehicle) givePlayerMoney(player,math.random(10,100)) elseif ( vehicleHealth > 80 ) then outputChatBox( "`Эта машина не нуждается в ремонте...",0,213,0 ) end end end addCommandHandler("x" , fixCar) Скрипт не работает debugscript выдает: [2012-02-12 19:05:27]WARNING: jobs\works.lua:113: Bad argument @ 'getElementHealth' [2012-02-12 19:05:27] ERROR: jobs\works.lua:114: attempt to compare boolean with number
  11. Thank you very much, Paper! Works perfectly)
  12. Hey guys. I decided to create small script for RPG server. Taxi driver should earn money when someone (passanger) is in his car. Here is my (dead) script: function betaaldeChaufeur(thePlayer, seat, jacked) theVehicleID = getElementModel ( source ) if (theVehicleID == 420) and ( seat ~= 0 ) then driver = getVehicleOccupant(source, 0) timerMoneyTaxi = setTimer( function( player ) givePlayerMoney (driver, 900) end, 5000, 1 , source ) destroyElement ( taxiOphaalBlip ) end end addEventHandler ("onVehicleEnter", getRootElement(), betaaldeChaufeur) I think my mistake somewhere here: timerMoneyTaxi = setTimer( function( player ) givePlayerMoney (driver, 900) end, 5000, 1 , source ) but idk how to fix it. Help me, please
  13. да, скин меняет не зависимо от количества денег.
  14. Я поправил свой код твоими исправлениями, получилось вот что: function playerLogin (thePreviousAccount, theCurrentAccount, autoLogin) if not (isGuestAccount (getPlayerAccount (source))) then setElementData( source, "default_skin", getElementModel( source ) ) end end function camf() if (client) then local px,py,pz = getElementPosition( client ) local rot = setPedRotation(client, 1) setCameraMatrix( source, px, py+4, pz, px, py, pz) end end addEvent("FrontCamera", true) addEventHandler("FrontCamera", getRootElement(), camf) function selected() if client then local playerskin = getElementData( client, "default_skin" ) if not playerskin then -- Если нужно, добавь текст с ошибкой или можешь использовать assert для прерывания скрипта и вывода ошибки в дебаг return; end if ( getPlayerMoney( client ) or 0 ) < 500 then setElementModel ( client, playerskin ) fadeCamera( client, true ) setCameraTarget( client, client ) outputChatBox( "У Вас недостаточно денег!", client , 255, 0, 0, true ) else fadeCamera( client, true ) setCameraTarget( client, client ) outputChatBox( "Вы успешно купили скин!", client ) takePlayerMoney( client, 500 ) end end end addEvent("SkinSelected", true) addEventHandler("SkinSelected", getRootElement(), selected) function notselected() if (client) then fadeCamera(client, true) setCameraTarget(client, client) end end addEvent("SkinNotSelected", true) addEventHandler("SkinNotSelected", getRootElement(), notselected) function skinright() local skin = getPedSkin(client) if (client) then 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(client, skin+1) end end end addEvent("SkinRight", true) addEventHandler("SkinRight", getRootElement(), skinright) function skinleft() local skin = getPedSkin(client) if (client) then 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(client, skin-1) end end end addEvent("SkinLeft", true) addEventHandler("SkinLeft", getRootElement(), skinleft) Но дело в том что картина не изменилась. Скин продолжает применяться, не смотря на нехватку денег, и не возвращается в исходный (тот который игрок получает при входу на сервер). Почему так?
  15. С делал как вы посоветовали: function playerLogin (thePreviousAccount, theCurrentAccount, autoLogin) if not (isGuestAccount (getPlayerAccount (source))) then local playerskin = getElementModel ( source ) end end function selected() if client then if ( getPlayerMoney( client ) or 0 ) < 500 then setElementModel ( client, playerskin ) fadeCamera( client, true ) setCameraTarget( client, client ) outputChatBox( "У Вас недостаточно денег!", client , 255, 0, 0, true ) else fadeCamera( client, true ) setCameraTarget( client, client ) outputChatBox( "Вы успешно купили скин!", client ) takePlayerMoney( client, 500 ) end end end Теперь скин записывается в память при авторизации на сервере, после чего в функции покупки, при нехватке денег возвращается на игрока. Я правильно сделал? Во всяком случае debugscript ругается [2012-02-10 16:52:42] WARNING: skinselect\s_skinselect.lua:22: Bad argument @ 'setElementModel' не пойму по чему p.s. вычитал что лучше использовать getElementModel и SetElementModel
  16. Вот хотел добавить в функцию следующее: При недостатке денег в чат отправляется уведомление об этом, возвращается скинь который был ДО захода в магазин (изначальный) и закрывается сам магазин. function selected() if client then getPedSkin ( source ) if ( getPlayerMoney( client ) or 0 ) < 500 then setPedSkin ( source ) fadeCamera( client, true ) setCameraTarget( client, client ) outputChatBox( "У Вас недостаточно денег!", client , 255, 0, 0, true ) else fadeCamera( client, true ) setCameraTarget( client, client ) outputChatBox( "Вы успешно купили скин!", client ) takePlayerMoney( client, 500 ) end end end addEvent("SkinSelected", true) addEventHandler("SkinSelected", getRootElement(), selected) Не работает
  17. Ну как бы нужно при входе на маркер получить скин игрока и записать куда-то (пускай это будет например ElementData). При нажатии на "Выход" так же через событие устанавливаем скин игроку и ElementData. Я просто в коде не нахожу этих событий. Их там и нет Я просто спросил как можно реализовать такое) Спасибо большое за совет
  18. Оценено По моему вопросу (пост выше) поможете? Очень вас прошу!
  19. Возникла идея сделать скрипт на покупку скина (РПГ сервер). За основу я взял скрипт с комьюнити. Скрипт изначально работал только для выбора скина. Я решил добавить следующее: 1. При нажатии на кнопку "купить" у игрока отнимается 200 долларов и применяется скин 2. При нажатии на кнопку "выход" у него возвращается предыдущий скин. Вот код: Клиент: markerskin = createMarker( 1520.4227294922,-1618.5716552734,12.546875,"cylinder",1,100,0,150,200 ) function CreateSelectorWindow() wdwselector = guiCreateWindow(0.438,0.820,0.15,0.13,"Покупка скина",true) guiWindowSetMovable(wdwselector,false) btnLeft = guiCreateButton(0.0,0.23,0.200,0.300,"<-",true,wdwselector) btnRight = guiCreateButton(0.76,0.23,0.200,0.300,"->",true,wdwselector) btnSelect = guiCreateButton(0.30,0.23,0.400,0.300,"Купить",true,wdwselector) btnClose = guiCreateButton(0.30,0.60,0.400,0.300,"Выход",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", btnClose, clientSkinClose, false) if (wdwselector ~= nil) then guiSetVisible(wdwselector, true) triggerServerEvent("FrontCamera", getRootElement()) end showCursor(true) end addCommandHandler("skin", selectorenable, false, false) function clientSkinSelect(button) if button == "left" then guiSetVisible(wdwselector, false) showCursor(false) triggerServerEvent("SkinSelected", getRootElement()) end end function clientSkinClose(button) if button == "left" then guiSetVisible(wdwselector, false) showCursor(false) triggerServerEvent("SkinNotSelected", getRootElement()) end end function clientSkinRight(button) if button == "left" then triggerServerEvent("SkinRight", getRootElement()) end end function clientSkinLeft(button) if button == "left" then triggerServerEvent("SkinLeft", getRootElement()) end end Сервер: function camf() if (client) then local px,py,pz = getElementPosition( client ) local rot = setPedRotation(client, 1) setCameraMatrix( source, px, py+4, pz, px, py, pz) end end addEvent("FrontCamera", true) addEventHandler("FrontCamera", getRootElement(), camf) ----------------------------------------- function selected() local money = getPlayerMoney(thePlayer) if (client) then fadeCamera(client, true) setCameraTarget(client, client) outputChatBox("Вы успешно купили скин!", client) elseif (money < 500) then outputChatBox("You don't have money!",thePlayer,255,0,0,true) else takePlayerMoney(thePlayer,500) end end addEvent("SkinSelected", true) addEventHandler("SkinSelected", getRootElement(), selected) ------------------------------------------------- function notselected() if (client) then fadeCamera(client, true) setCameraTarget(client, client) end end addEvent("SkinNotSelected", true) addEventHandler("SkinNotSelected", getRootElement(), notselected) function skinright() local skin = getPedSkin(client) if (client) then 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(client, skin+1) end end end addEvent("SkinRight", true) addEventHandler("SkinRight", getRootElement(), skinright) function skinleft() local skin = getPedSkin(client) if (client) then 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(client, skin-1) end end end addEvent("SkinLeft", true) addEventHandler("SkinLeft", getRootElement(), skinleft) Функция покупки снятия денег на стороне сервера (отделил --------------- что бы было видно сразу ). Вопрос: почему не работает? где допущено ошибку? Подскажите пожалуйста Дополнение: подскажите пожалуйста, если не сложно как делать так, что бы при нажатии на кнопку "выход" игроку возвращался предыдущий скин, и он выходил из режима покупки?
  20. Kenix, should this fixed code save robbery "cooldown" after player disconnects from the server? In my case when I'm making reconnect I can rob the bank without any cooldown
×
×
  • Create New...