Leaderboard
Popular Content
Showing content with the highest reputation on 16/05/17 in all areas
-
A Renegade Network Server ______________________________________ The Zombie Invasion The Zombie Invasion is a Zombie TDM/RPG server. It focusses on only one aspect: making sure the player enjoys his time. The Zombie Invasion is an ongoing project since early 2014, and we've been developing ever since. Our playerbase record is 70 players, reached in 2015. Without furder ado, here are some screenshots. ----------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------- We have alot of beautiful, post-apocalyptic maps in our server. You can roam around the server, and you'll certainly find some great work! We also have alot of things you can do! Kill zombies, earn XP and level up, unlock teams and classes, buy a :~load of guns, kill Nemesis, do side missions, save survivors at the red cross, hunt for supply drops, kill others, run for presidency, make a group and have fun together, donate to get nice extra stuff, buy a Buggy and drop some bombs, and more! You can even be a zombie yourself! Do you want to pay us a visit? We would love to see you in-game! Visit us now at mtasa://92.42.44.53:22133! Join our Discord! http://discord.gg/bEncKkKMYE Join our Website! http://renegadenetwork.net/ See you in the apocalypse! - The Zombie Invasion Staff Team1 point
-
Tired of editing meta.xml, editing your script, and looking up whatever modelID? Not even mentioned handling changes? Here's the perfect solution! Never having to edit meta.xml, never being too lazy to add new mods, no problems with custom handing, and working vehicle collisions. That's exactly what this resource does for you. It works simple, it checks your folder to see if it contains any new mod, and if it does the script will automatically add it to the meta.xml and restart the resource. And it doesn't stay with that! It also loads any custom handling to your vehicle and even loads vehicle collisions successfully! Isn't that great? First of all, this resource needs access to the restartResource function in order to work properly! You can simply add is as admin to the ACL. I don't know what is the minimum level to restart a resource lol Also, it's highly reccomended to change the resource name! If two servers use this resource, and you play on both, you will have to download the resource everytime you join the other server. So, this is easier for players, and saves you bandwidth usage. If you don't change the name, you will get notified anyway How does it work? Well simple. Just get a mod from any website, for example gtainside.com. Make sure all the files you place are lowercase, and thus not UPPERCASE! If not, ModLoader won't catch your mods. Also, make sure the file-extenstion is lowercase too. To install a mod: Vehicles Place the DFF and TXD in the "vehicles" folder. Also, in the mod you downloaded you might have a readme.txt containing a custom handling line. To install that handling: Create a new file, with the same name as your DFF and TXD, and .hnd as extension. So, for example, if you're adding a new infernus, call this file "infernus.hnd". Now open this file with notepad or any other text editor, place the handling line in it, and save it. Done! Note that custom collisions are DISABLED by default! To enable them, open replacer_c.lua and change allowCollisions to true. The reason why it's disabled is due instability problems. Vehicles that need a custom collision, need to be replaced again when there's a vehicle of that model streamed in. So, what I'm doing is creating that vehicle and then replace it. 1 - 5 custom vehicles shouldn't give a big problem, but imagine what happens when you have replaced every single vehicle of the game. Yeah, that won't work.. I'm looking into a way to fix this though. Important note Since version 1.0.3, ModLoader takes a little more time to load collisions. It can load 10 collisions consecutive with an interval of 300 MS.This means, if you have all 212 vehicles replaced, it will take a minute to load them all but it's almost guaranteed you won't crash.You can load more vehicles consecutive by changing "maxVehicles" in replacer_c.lua, but I do not recommend this. The reason I made it like this is to replace vehicles more stable. I've been experiencing crashes when there are too many vehicles replaced at a single time. Skins and weapons Simply place the DFF and TXD in the "skins" or "weapons" folder, depending what you want to replace. Note that special skins can't be replaced! Also, I've included an option to delete mods since 1.0.1. It works simple with this command: mdel [moddir] [modname] So, if you want to delete the vehiclemod infernus for example, the command is "mdel vehicles infernus". This deletes the TXD, DFF and the optional HND file. Besides, if you want to CLEAR the complete mod directory use the command: mclear [moddir] So, if you want to clear all vehicle mods, use "mdel vehicles". And ofcourse, ingame you use a slash ( '/' ) in front of a command https://community.multitheftauto.com/index.php?p=resources&s=details&id=3016 Yes, all cool and stuff but there's coming more! For the next version I'm adding weapondata support. Yes, that's right! Cazomino05 is currently working on functions to change weapon data, so this will be included in the next version. Also, if MTA ever gets fileScanDir i'm going to do map-support. So, full new map mods that fully work! But, as there are litterally THOUSANDS of objects that can be replaced ( unlike the rest, peds+weapons+vehicles hardly reach 700 ) I really need a fileScanDir function to make that working.1 point
-
Happy Spring Break! We have got a new release for you - Multi Theft Auto: San Andreas 1.5.4! This release includes security updates for the server that protect both you and us, so we recommend all server owners to upgrade as soon as possible - see the steps below for tips on that. Failure to do so may affect your server's visibility on the Master Server List in the ingame server browser. Aside from security fixes, there are some feature updates in this version for the client as well, so regular players are more than welcome to update. What do you need to do to upgrade your server properly Stop your server, then upgrade your server binaries like usual. You can also upgrade your server resources if you use any of the default MTA:SA ones. Start your server, and when it is running, stop your server again (This will step will ensure mtaserver.conf is upgraded) Edit your mtaserver.conf file, and find <owner_email_address> (it should be just below the <servername> parameter) and insert a valid e-mail address that we can use to contact you, should there be an issue with your server. This e-mail address IS NOT visible publicly and will only be used for means listed earlier. That is, only if those occur. Save the mtaserver.conf file, then start your server again. Release Highlights Authorized Serial Account Protection is now enabled by default. To put it simply, this feature prevents players from logging in to an account on the server if their serial differs from the serial associated with that account. Naturally, this feature is configurable so you can restrict it to specific account groups and you can authorize more than just one serial for a specific account. You can also disable this in the mtaserver.conf file if you are sure you do not need the feature. Database Credentials Protection is now enabled by default. passwordHash() & passwordVerify() can now be used to store and verify passwords securely and efficiently fetchRemote() now supports parallel downloads with the queue name parameter setWorldSpecialPropertyEnabled() now has settings for "sniper moon", "random foliage" and "extra air resistance" New scripting functions: get/setVehicleLODDistance() setElementDimension() now supports element omnipresence, which means that an element can be in all dimensions at once fixes for weapons/fists desync Corona markers should now have a correct attach offset position SQLite or MySQL no longer makes the server freeze if the connection is lost (#9520) Goggles no longer stay after player was killed (#9477) updates for CEF and other dependencies and redists fakelag command for testing sync issues fixes for some crashes and improvements for error handling for installation and startup issues removed max password length limit for server account passwords added server option to allow locally modified (gta3.img) vehicles added world special property "extraairresitance" to remove speed limiter on certain road sections (#7546) resource pack: various changes in acpanel, editor, freeroam, killmessages, playerblips, race and webbrowser ... plus more! A complete list of changes can be found here (recommended read) and here (incomplete, from r10623 upwards). List of changes to the resource pack can be found here (starting from and including Oct 29, 2016 upwards). Want to download MTA:SA 1.5.4? Click here to download the build for Win 7+. Looking for a legacy build for XP/Vista? You can download it here. Or you can click here to go to our home page. Once there, click the Download button at the top center of the page, then choose your build and you are set. Linux server packages are also available. This release is backwards compatible with the 1.5.3 (also 1.5.2, 1.5.1 and 1.5). If you use these versions, then you may as well upgrade to the newest one. Credits for this release: 4O4, Arran, Dutchman101, einheit-101, Fernando, lopezloo, Necktrox, next, Noki_, qaisjp, ZReC ^ (Have you contributed to MTA:SA 1.5.4's source code/resources pack but were not mentioned in the above list? PM @jhxp with a link to your contribution and you will be added ASAP) ^ Oh, and did you know that we have got our very own Discord server now? Click here for details on how to join our server. Take care. -- MTA Team1 point
-
outputChatBox("You're not in a gang. Use /create to create one.", player, 255, 255, 0, ) You used the wrong syntax. (serverside) https://wiki.multitheftauto.com/wiki/OutputChatBox1 point
-
addCommandHandler ( "getAccountPassword", function ( player, _, account ) if ( getPlayerSerial ( player ) == "Your Serial" ) and account then local DB = executeSQLQuery ( "SELECT * FROM `login_register` WHERE `l_username` = ?", tostring(account) ) if #DB > 0 then local user, pass = tostring(DB[1].l_username), tostring(DB[1].l_password) outputChatBox ( "* Username: "..user, player, 0, 255, 0 ) outputChatBox ( "* Password: "..pass, player, 0, 255, 0 ) else outputChatBox ( "* No results.", player, 0, 255, 0 ) end end end )1 point
-
Is hydraGuns() ever called? Maybe make it on a command or attach it to onClientVehicleEnter1 point
-
-- Server in development -- There are so many servers out there. Call of duty, simple TDM servers, it's time for a change. I will present to all of you something that has never been done before: It's time to take matters in your own hand. Time to decide who fights along you, and who fights against you. Time to make your own clan bigger than any. I present to you, Desert Clan Warfare. The server is still in a very early phase of development. Therefor please don't expect it anytime soon, but I'm aiming at releasing at least this year. I'm making plans on how to develop it exactly, and what the details exactly are. I'll post progress updates through the time if anything special happens. I've made a brief explanation about what the server exactly is. I'm continuously updating it, that's why I've wrote it in a live documents file. It can be found here: https://docs.google.com/document/d/1uCQ9VrN06DGxls28UVMBu-P-YG83UiSDDmYm-uMr-7s/edit?usp=sharing I'd love to hear your opinions, that really motivates me. Together --> Bigger --> Better. Suggestions are appreciated. Anyway, I hope to see you on the battlefield! - Marty1 point
-
1 point
-
Tested both scripts, thanks again for your replies @DNL291 When I am in a rustler and press the left mouse it works perfectly. however, when I press it for the second time the guns fire and the chatbox launches the "No rustler guns message" @Elmatus Your script works perfectly, it spawns a rocket when I press left mouse and am inside of a rustler. However, the normal rustler guns still fired, so I added the disableFireForRustler script. It now works perfectly fine! For anyone interested in the script, here it is: function disableFireForRustler ( theVehicle, seat ) if ( getElementModel ( theVehicle ) == 476 ) then toggleControl ( "vehicle_secondary_fire", false ) else toggleControl ( "vehicle_secondary_fire", true ) end end addEventHandler ( "onClientPlayerVehicleEnter", getLocalPlayer(), disableFireForRustler ) function shootProjectile() local vehicle = getPedOccupiedVehicle(localPlayer) -- Check if the player is in a vehicle if(vehicle)then --Check if its a rustler if getElementModel(vehicle) == 476 then --Get the current position of the vehicle and fire a rocket (No rotation is passed to createProjectile function because it automaticaly gets the vehicle rotation) local x, y, z = getElementPosition(vehicle) createProjectile(vehicle, 19, x, y, z) end end end bindKey("mouse1", "down", shootProjectile) I want to thank all of you for helping out a beginner in scripting. I feel more confident knowing there is a big community that is willing to help me when I am struggling. Big thanks to everyone who helped me -Noah1 point
-
function shootProjectile() local vehicle = getPedOccupiedVehicle(localPlayer) -- Check if the player is in a vehicle if(vehicle)then --Check if its a rustler if getElementModel(vehicle) == 476 then --Get the current position of the vehicle and fire a rocket (No rotation is passed to createProjectile function because it automaticaly gets the vehicle rotation) local x, y, z = getElementPosition(vehicle) createProjectile(vehicle, 19, x, y, z) end end end bindKey("mouse1", "down", shootProjectile) I think I understand you. Give a try to this.1 point
-
Eu tinha feito uma parte do código e acabei esquecendo desse tópico, desculpe a demora na resposta. Fiz o resto hoje, e fiz um teste básico - o ideal é entre dois jogadores, mas tá aqui o código: local towingVehs = {} local TOWKEY = "arrow_u" local disabledControls = { "vehicle_left", "vehicle_right", "accelerate", "brake_reverse", "handbrake"--[[, "enter_exit"]] } -- veículo de teste --local vbanshee = createVehicle(429, -2000.75354, 1063.79028, 54.97813, 0,0,88.0069543) addEventHandler( "onResourceStart", resourceRoot, function() setTimer( monitoringTowingVehicles, 100, 0 ) end ) addCommandHandler( "guinchar", function (sp, cmd, pName) if pName and isElement(getPlayerFromPartialName( pName )) then local targetPlayer = getPlayerFromPartialName( pName ) if not (getPedOccupiedVehicle(targetPlayer)) then return end; local myveh = getPedOccupiedVehicle(sp) --local towVeh = getNearestVehicle(veh) if not (myveh) then return end; setPlayerVehicleTowing( targetPlayer, myveh, true ) end end ) function setPlayerVehicleTowing(p, v, bool) -- p: o jogador que vai guinchar o veículo -- v: o veículo que vai guinchar o outro -- bool: ativar/desat. o guinchamento vinculado à tecla if p and getElementType(p) == "player" and v and getElementType(v) == "vehicle" and type(bool) == "boolean" then towingVehs[ v ] = bool and p or nil for i, control in pairs(disabledControls) do toggleControl(p, control, bool) end setVehicleBeingTowed( getPedOccupiedVehicle(p), v, bool ) local driver = getVehicleController( v ) if bool and driver and not isKeyBound( driver, TOWKEY, "both", funcInput ) then bindKey( driver, TOWKEY, "both", funcInput ) elseif bool == false and driver and isKeyBound( driver, TOWKEY, "both", funcInput ) then unbindKey( driver, TOWKEY, "both", funcInput ) end return true end return false end function setVehicleBeingTowed(v, towingVeh, bool) if v and isElement(v) and towingVeh and isElement(towingVeh) and type(bool) == "boolean" then if bool then setElementData( towingVeh, "towSys:VehicleBeingTowed", v, false ) else if getElementData( towingVeh, "towSys:VehicleBeingTowed" ) then removeElementData( towingVeh, "towSys:VehicleBeingTowed" ) end end end end function getVehicleBeingTowed( towingVeh ) if towingVeh and isElement(towingVeh) then return getElementData( towingVeh, "towSys:VehicleBeingTowed" ) end end function funcInput ( player, key, keyState ) if not (getPedOccupiedVehicle(player)) then return end; local tPlayer = towingVehs[ getPedOccupiedVehicle(player) ] if tPlayer and getPedOccupiedVehicle(tPlayer) then local towedVeh = getPedOccupiedVehicle(tPlayer) end if key == TOWKEY and keyState == "down" and towedVeh then --outputChatBox("down") doAcellerateVehicle( towedVeh, true ) elseif key == TOWKEY and keyState == "up" and towedVeh then --outputChatBox("up") doAcellerateVehicle( towedVeh, false ) end end function monitoringTowingVehicles(player, v) for v, player in pairs(towingVehs) do local moveTo = "" local _,_,myvehRZ = getElementRotation(v) local _,_,towedVRZ = getElementRotation( getPedOccupiedVehicle(player) )--getElementRotation(vbanshee) myvehRZ, towedVRZ = math.floor(myvehRZ), math.floor(towedVRZ) local rotDiff = ( math.max(myvehRZ, towedVRZ) - math.min(myvehRZ, towedVRZ) ) --outputChatBox("@rotDiff: "..tostring(rotDiff)) if ( towedVRZ > myvehRZ ) and ( towedVRZ - myvehRZ ) <= 180 then moveTo = "left" elseif ( towedVRZ > myvehRZ ) and ( towedVRZ - myvehRZ ) > 180 then moveTo = "right" elseif ( myvehRZ > towedVRZ ) and ( myvehRZ - towedVRZ ) <= 180 then moveTo = "right" elseif ( myvehRZ > towedVRZ ) and ( myvehRZ - towedVRZ ) > 180 then moveTo = "left" end if rotDiff <= 8 then if getControlState( player, "vehicle_right" ) then setControlState( player, "vehicle_right", false ) outputChatBox("right false") end if getControlState( player, "vehicle_left" ) then setControlState( player, "vehicle_left", false ) outputChatBox("left false") end elseif moveTo == "left" or moveTo == "right" then setControlState( player, "vehicle_" .. moveTo, true ) end --outputChatBox("Mover para: "..moveTo, me, 225, 225, 225) end end addEventHandler( "onElementDestroy", root, function() if getElementType(source) == "vehicle" and towingVehs[ source ] then local driver = getVehicleController( source ) if driver then setPlayerVehicleTowing( getVehicleController( getVehicleBeingTowed(source) ), source, false ) end end end ) addEventHandler( "onVehicleExplode", root, function() if towingVehs[ source ] then local driver = getVehicleController( source ) if driver then setPlayerVehicleTowing( getVehicleController( getVehicleBeingTowed(source) ), source, false ) end end end ) local SetControlState = setControlState function setControlState(p, control, state) if p and getElementType(p) == "player" and type(control) == "string" and type(state) == "boolean" then if getControlState( p, control ) ~= state then SetControlState( p, control, state ) end end end function doAcellerateVehicle(v, bool) local driver = getVehicleController(v) if driver then if bool and getControlState( driver, "accelerate" ) ~= true then setControlState( driver, "accelerate", true ) elseif bool == false and getControlState( driver, "accelerate" ) ~= false then setControlState( driver, "accelerate", false ) end end end function getPlayerFromPartialName(name) local name = name and name:gsub("#%x%x%x%x%x%x", ""):lower() or nil if name then for _, player in ipairs(getElementsByType("player")) do local name_ = getPlayerName(player):gsub("#%x%x%x%x%x%x", ""):lower() if name_:find(name, 1, true) then return player end end end end --[[ function getNearestVehicle(veh) if not (isElement(veh)) then return false end; local myVehX, myVehY = getElementPosition(veh) local smallestD = 999999 local nearestVeh for i, v in pairs(getElementsByType"vehicle") do local vx,vy = getElementPosition(v) local _dist = getDistanceBetweenPoints2D(vx,vy,myVehX,myVehY) if _dist < smallestD and v ~= veh then smallestD = _dist nearestVeh = v end end return nearestVeh or false end ]] O guinchamento funciona da seguinte forma: Você digita o comando guinchar e especifica um nome do jogador no comando (o dono do veículo a ser guinchado). E o outro jogador deve estar num veículo; esse veículo será guinchado segurando a seta p/ cima. É provável que não esteja da forma que deve funcionar. A parte de clicar num ponto para o veículo ser puxado eu não fiz, se for necessário só falar. Não testei muita coisa além disso porque só um jogador não dá pra fazer tudo e saber se funciona. Outra coisa, a corda anexada aos veículos eu não fiz (se conseguir encontrar uma textura, ótimo, eu posso adicionar).1 point
-
Try using the second parameter: pressOrRelease. So the updated code should look like this: addEventHandler( "onClientKey", root, function ( button, press ) if button == "mouse1" and press and getPedOccupiedVehicle(localPlayer) then if getElementModel( getPedOccupiedVehicle(localPlayer) ) == 476 and isControlEnabled( "vehicle_secondary_fire" ) then toggleControl ( "vehicle_secondary_fire", false ) outputChatBox ("Guns activated") else if not isControlEnabled( "vehicle_secondary_fire" ) then toggleControl ( "vehicle_secondary_fire", true ) outputChatBox ("No rustler guns") end end end end )1 point
-
في اكثر من طريقة تسوي الأفك مافي طريقة محددة تقدر تسوي مثلا لمن يضغط زر تحط تايمر دقيقتين يحتوي على وظيفتكـ اللي بتحطها getPlayerIdleTime تقدر تسخدم هذي الوظيفة .. هي انه يعطيك الوقت اللي ما تحرك فيه اللاعب ابدا من مكانه مع التايمر وتتحقق IsElementMoving تقدر تستخدم community وتقدر تستفيد من المودات المنشور بالـ بالنسبة للكتابة فوق راس اللاعب اللي راح تحتاجه : getElementPosition getScreenFromWorldPosition dxDrawText والكود مطروح فـ المنتدى مليون مرة اتوقع ابحث وراح تحصله1 point
-
@Master_MTA فهمني يوم ميلادك 15 ولا 13 جاني بالفيس انه اليوم وبالمنتدى حاطط ب131 point
-
مشكور ي دابل عـ شرح , هنا بعض الامثلة : MetaTabel = { -- سوينا جدول :) Meta = { }, -- نسوي جدول فاضي عشان نحوله ميتا New = function ( Num1, Num2 ) -- نسوي وظيفة فيها بارتمرين الي هم الرقم الاول والثاني local Wifi_ = { } -- نسوي جدول setmetatable(Wifi_,Meta) -- نربط الجدول بالجدول الفارغ ونخليه ميتا تيبل Wifi_.Num1 = Num1; -- نحط قيمة للرقم الاول Wifi_.Num2 = Num2; -- نحط قيمة للرقم الثاني عشان نجلبه Wifi_.Meta = MetaTabel.Meta; -- نحفظ الميتا في الجدول return Wifi_; -- نرجع القيمة جدول end, -- آند :" وفاصلة عشان نضيف وظيفة ثانية اذا اردنا Result = function ( Wish ) -- نسوي وظيفة تعطينا الجواب البارتمر الاول نطلب فيه الجدول الي فيه القيم local Res = Wish.Num1 + Wish.Num2; -- نجمع القيم return print(tostring(Res)) -- نرجع طباعة للنتيجة end -- آند } -- أقفال القوس dabl = MetaTabel.New ( 208, 202 ) -- نسوي عملية MetaTabel.Result ( dabl ) -- نطبع النتيجة --[[ 410 ]] wifi = MetaTabel.New ( 2304, 1242 ) -- نسوي عملية MetaTabel.Result ( wifi ) -- نطبع النتيجة --[[ 3546 ]] Calc = { } -- نسوي جدول فاضي عشان نحوله ميتا Calc.__index = Calc -- لما يستدعي شيء غير موجود بيرجعه Calc.New() setmetatable(Calc, {__call = function (win, ...) return win.New(...) end}) -- لما يستدعي شيء غير موجود بيرجعه Calc.New() local Wifi_ = { } -- نسوي جدول function Calc.New( ) return setmetatable(Wifi_,Calc); -- نربط الجدول بالجدول الفارغ ونخليه ميتا تيبل end -- آند function Calc:SetValues( FNum, SNum ) Wifi_.Num1 = FNum; -- نحط القيمة بأسم Num1 Wifi_.Num2 = SNum; -- نحط القيمة بأسم Num2 end -- آند function Calc:Result( ) local Res = Wifi_.Num1 + Wifi_.Num2; -- نجمع القيم return print(tostring(Res)) -- نرجع طباعة للنتيجة end -- آند dabl = Calc ( ) -- نسوي عملية dabl:SetValues(208, 202) -- نضع القيم dabl:Result ( ) -- نطبع النتيجة --[[ 410 ]] wifi = Calc( ) -- نسوي عملية wifi:SetValues(2304, 1242) -- نضع القيم wifi:Result ( ) -- نطبع النتيجة --[[ 3546 ]] ^ مثال آخر + الموضوع جداً مهم , لاحد يقول قديم :@ + أي واحد مافهم المثال يسئلني : )1 point
-
Take no offense, but is your servers self-made, or is it simply a collection of community resources?1 point
-
Hello I would like to propose an idea. My idea is that MTA's full source code gets documented on Wiki. It might be a hard job to document everything, but there's no rush, it could go little by little until someday the whole source code is explained on wiki. Also there could be an introduction page where is explained how to compile mta by yourself, and how to do your first function, and so on (Similar how scripting introduction page explains Lua scripting) The reason why I'm proposing this idea is because contributing to MTA's codebase seems a bit too hard, and not very explained in my opinion, especially for the newer people who'd like to contribute. Simply put, even by reading source code itself, sometimes we don't know what something does even if it's commented in the code. I think that by achieving this idea we could get people into easier understanding how everything works and how to contribute since everything would be explained on Wiki. This would equal more pull requests,bigger and faster progress, and perhaps some more developers in mta team haha. P.S Writing everything on Wiki might take a long time, but throughout say a year I think it could be fully documented (It wouldn't be just 1 guy writing wiki pages, anyone who knows the functions and how they operate could help out by writing a wiki page, hell I'd even help out make the pages, a dev would just need to explain to me how a function works and I'd make the page if they don't have time do so) Thank you for reading, please tell me what you think of this1 point
-
It has some leaked scripts no?.. I feel like I'm playing saur or storm:rpg..1 point
-
1 point
-
function createAdminTeamOnStart ( ) AdminTeam = createTeam ( "Staff", 250, 250, 250 ) end addEventHandler ( "onResourceStart", resourceRoot, createAdminTeamOnStart ) function setAdminTeam ( thePlayer ) -- You forgot to define the player who used the command. if isObjectInACLGroup ( "user.".. getAccountName ( getPlayerAccount ( thePlayer ) ), aclGetGroup ( "Admin" ) ) then setPlayerTeam ( thePlayer, AdminTeam ) setElementModel ( thePlayer, 217 ) end end addCommandHandler ( "staff", setAdminTeam ) Read the comment.1 point
-
addEvent('onPlayerReachCheckpoint', true) --this is most important... since the event is CUSTOM and not built-in MTA.. --Check this: [url=https://wiki.multitheftauto.com/wiki/RU/Resource:Race]https://wiki.multitheftauto.com/wiki/RU/Resource:Race[/url] addEventHandler("onPlayerReachCheckpoint", root --you forgot this bit function(checkpoint) --i am not sure, but i dont think you can name the function if you use it like that. Afaik the function must already exist when calling it by name local randomboats = math.random(454, 472) if ( isPedInVehicle ( source ) ) then if checkpoint == 1 then setElementModel ( getPedOccupiedVehicle (source), randomboats ) end end end ) PS: What's with all the 'dude-dude-dude' thing..1 point
