Jump to content

Wojak

Members
  • Posts

    321
  • Joined

  • Last visited

  • Days Won

    2

Everything posted by Wojak

  1. function doCreateElement ( elementType, resourceName, creationParameters, attachLater, shortcut ) - elementType - the type of the element you want to create (for example "racepickup") - resourceName - the name of the resource the edf you want to use (for example "race") - creationParameters - table containing the element properties (for example creationParameters = {position = {0, 0, 0}, type="nitro"}) - i think it's optional - attachLater - idk... it can be true or false, i think it's optional - shortcut - idk, i think it's optional
  2. from my experience colshapes can only detect peds and vehicles that are synced (isElementWithinColShape on non synced element will return a last synced state) if you want to detect other types of elements, you need to write a set custom function to chcek if the element is at given coordinates
  3. it's important to know whot is the source of the event (this information is on the wiki in every event description...) about the First Example: source of "onClientPlayerWeaponFire" is a player, and getLocalPlayer() returns a player, so event will be trigger for one player about the "onClientMouseEnter" event: the source is a gui element, so you can't use the player element to trigger that event for single element you can for exemple: myWindow = guiCreateWindow ( 0, 0, 0.5, 0.4, "Information", true ) addEventHandler( "onClientMouseEnter",myWindow, function(aX, aY) outputChatBox( "You're pointing at a GUI window at ("..tostring(aX)..", "..tostring(aY)..")") end )
  4. create a empty table serverside, when the resource starts vehicles = {} when the player press the button, send the player element to the server via event and cteate the vehicle like this: vehicles[player who press the button] = createVehicle(...) you can check if the vehicle exists by: if isElement(vehicles[player who press the button]) then ... end
  5. you need to understand this: https://wiki.multitheftauto.com/wiki/Element_tree https://wiki.multitheftauto.com/wiki/Event_system https://wiki.multitheftauto.com/wiki/GetLocalPlayer you use getRootElement() or root if you want to trigger the event for every valid element (if the source of the event is a player, it will be all players, if it is a marker - all markers, if it is a resource - all resources, ect.) if you want to trigger a event for a specyfic group of elements, you need to cteate a dummy element, set it as a parent of your elements, and trigger the event for that parent you can also trigger events for a single element - getLocalPlayer() is a example of that (note: getLocalPlayer() is client only function!)
  6. I've checked your map in the showroom, and i can say, that teleports made in my resource are more advanced... in your map i see that the vehicle speed is reduced to 0 after teleportation, while my resource can remember the hit speed, and adjust the speed vector to vehicle rotation, no matter what rotation you set... my resource also supports the "jump pickups" (or cannons), but you dont have to set the x,y,z velocity components manualy - you set the angle by rotating a element in map editor, and set the single speed value (in km/h)
  7. function MarkerHit ( hitPlayer, matchingDimension ) if source == inhouse and getElementType(hitPlayer) == "player" then local veh = getPedOccupiedVehicle(hitPlayer) if isElement(veh) then setElementPosition( veh, x, y, z ) setPlayerRotation (veh, rx, ry, rz ) setVehicleFrozen (veh, true ) setTimer ( setVehicleFrozen, 1000,1,veh,false ) end end addEventHandler( "onMarkerHit", inhouse, MarkerHit ) but this will do everything for you : viewtopic.php?f=108&t=32529
  8. line 24, 34, 50: if getElementType(hitPlayer) == "player" and hitPlayer == getLocalPlayer() then
  9. i only know how to do it with rockets: you maus use the onClientExplosion event, and check if the explosion is near rihno, than you damage the tank by getElementHealth,setElementHealth (helth functions should be used serverside, so you will ned some custom events as well) https://wiki.multitheftauto.com/wiki/OnClientExplosion https://wiki.multitheftauto.com/wiki/GetElementHealth https://wiki.multitheftauto.com/wiki/SetElementHealth
  10. Biorąc pod uwagę fakt że nie każdy potrafi czytać łamaną angielszczyznę, doszedłem do wniosku że Polski zasób potrzebuje Polskiego opisu. Opis angielski, gdzie można znaleźć fotki w większej rozdzielczości niż na comunity: https://forum.multitheftauto.com/viewtop ... 02#p342840 Zasób pozwala na tworzenie teleportów w standardowym edytorze map MTA, oraz odpowiada za ich obsługę podczas gry czytając dane z pliku mapy. Można łączyć ze sobą różne miejsca, wnętrza i wymiary, mając pełną kontrolę nad rotacją, pozycją i prędkością po teleportacji, przy odrobinie inwencji można także tworzyć przyśpieszacze i armaty. Zasób do pobrania stąd: https://community.multitheftauto.com/ind ... ls&id=1960 Przykładowa mapka pokazująca możliwości (odpalamy z zasobem „play”) https://community.multitheftauto.com/ind ... ls&id=1961 Instrukcja obsługi: w wersji wideo: Zawartość: Część I -- Instalacja 0:02 Część II -- Tworzenie podstawowego teleportu 0:23 Część III -- Testowanie 2:07 Część IV -- Uruchamianie mapy na serwerze 3:32 Dodawanie definicji: Przechodzimy do trybu kursora wciskając „f”, wybieramy z menu ikonę „Definitions” i klikamy podwójnie na zasoby które chcemy wybrać (w tym „teleporteditor”, akceptujemy zmiany i zjeżdżamy kursorem do lewego dolnego rogu. Aby przechodzić między definicjami różnych zasobów używamy kółka myszy. Po ukończeniu mapy należy dodać tę linijkę do pliku meta.xml mapy: NIE SĄ TWORZONE ŻADNE DODATKOWE PLIKI ZE SKRYPTAMI, TEN ZASÓB ODPOWIADA ZA OBSŁUGĘ TELEPORTÓW PODCZAS GRY, WIĘC MUSI BYĆ ODŁĄCZONY DO MAPY. Za pomocą edytora do mapy musimy dodawać następujące elementy: Teleport_p – w edytorze reprezentowany jest przez marker ze strzałką w środku i podczepionym tekstem, w grze będzie to ten sam marker i tekst. Marker typu „ring” (pierścień) może być obracany (tylko rotacja markera typu „ring” będzie ustawiona podczas gry). Element posiada następujące właściwości: - position: jak łatwo się domyśleć współrzędne markera - rotation: rotacja, czyli ustawienie elementu względem 3 osi obrotu (ważne tylko dla markera typu „ring”) - type: typ markera - size: rozmiar markera - color: kolor markera - description: opis – ten tekst będzie podczepiony do markera - desccolor: kolor tekstu podczepionego do markera - destynation_id: id miejsca do którego nasz marker powinien teleportować, należy kliknąć na „browse” i wybrać element z listy, jeśli lista jest pusta należy utworzyć jakiś element „destination_p”. Jeśli wartość tej właściwości nie jest prawidłowa, teleport nie zostanie utworzony podczas gry. - restriction: filtr wskazujący co ma zostać przepuszczane – jeśli ustawione na „false” - wszystko jak leci, jeśli „playerOnly” - tylko gracze bez pojazdów, jeśli „inVehicleOnly” - tylko gracze w pojazdach - dimension_: wymiar w którym teleport zostanie utworzony i będzie dostępny - interior_: wnętrze w którym teleport zostanie utworzony i będzie dostępny destination_p – w edytorze jest reprezentowany przez pojazd „RC Bandit” ze strzałką, podczas gry będzie niewidzialny. Kierunek w którym zwrócony jest RC Bandit jest bardzo ważny, oprócz rotacji docelowej określa równiec kierunek poruszania się elementu (głównie pojazdu) po teleportacji. Element posiada następujące właściwości: - position: pozycja docelowa - relative: względność pozycji docelowej, jeśli ustawione na „false” elemęt pojawi się dokładnie we wskazanych powyżej współrzędnych,jeśli ustawione na „coord”, powyższe współrzędne będą dodane do współrzędnych uderzenia w marker (position =0,0,20 i relative= coord zwiększy rzędną „z” współrzędnych uderzania w marker o 20 jednostek), jeśli ustawione na „coordNrot” osie x,y,z zostaną dostosowane do rotacji elementu po teleportacji (x = lewo, prawo; y= przód, tył; z= góra, duł)(position =0,20,0 i relative= coordNrot przeniesie element 20 jednostek do przodu) - rotation: rotacja elementu po teleportacji - use_dest_rot: jeśli „true” zostanie użyta rotacja ustawiona powyżej, jeśli „false” rotacja powyżej zostanie zignorowana, w zamian zostanie użyta rotacja przy uderzeniu w marker. - fixed_speed: ustalona prędkość w km/h jaką będzie miał element po teleportacji, jeśli ustawione na więcej niż 0, prędkość uderzenia w marker i mnożnik prędkości (speed_multiplayer) będą ignorowane. - speed_multiplayer: jeśli pomiędzy 0 i 1 zmniejszy prędkość uderzenia w marker (0.5 zmniejszy o połowę), jeśli większe od 1 zwiększy prędkość (2 zwiększy dwukrotnie ) - t_dimension: wymiar jaki zostanie ustawiony po teleportacji - t_interior: wnętrze jakie zostanie ustawione po teleportacji Po połączeniu teleportu z celem, i zaznaczeniu jednego z połączonych elementów, na obu wyświetlą się ikony. Ikony te są widoczne z każdej odległości, więc łatwo można śledzić które miejsca są ze sobą połączone Nowości w wersji 0.1.2: - nowe, ładniejsze ikony zrobione przez użytkownika Moo-Mapper; - rozmiar ikon na zaznaczonych elementach został zwiększony; - alternatywny sposób przyporządkowywania celów dla teleportów. Jeśli zaznaczysz jakiś teleport, do którego nie został przyporządkowany cel, lub stworzysz nowy, potem zaznaczysz jakiś cel, lub stworzysz nowy, zasób wyświetli okno z zapytaniem, czy chcesz połączyć te elementy (okienko pojawi się z niewielkim opóźnieniem – opóźnienie to jest zamierzone) - kamera po teleportacji wymuszona jest za pojazdem (to samo próbowałem zrobić dla graczy bez pojazdu, ale coś jest nie tak... Testowanie: w obecnej wersji testowanie bezpośrednio w edytorze nie jest możliwe, obejście z którego korzystam ja: 1. zapisujemy mapę i zapamiętujemy nazwę 2. zatrzymujemy edytor (/stop editor) 3. uruchamiamy gamemoda z którym kompatybilna jest nasza mapa (/start ) 4. uruchamiamy mapę (/start (nazwa naszej mapy))– czasem konieczne jest zatrzymanie obecnie uruchomionej, jeśli gamemod korzysta z votemenagera (/votemap ) 5. jeśli w międzyczasie nie dodaliśmy to pliku meta.xml naszej mapy linijki , uruchamiamy teleporteditor(/start teleporteditor) 6. po zakończeniu testów najlepiej jest rozłączyć się z edytorem i uruchomić go ponownie
  11. Wojak

    Timer Set Data

    the problem is that setTimer creates a infinit loop, even if the player quits it still try to perform operations on him... the solution is to check if the element exist (isElement(thePlayer)) and (what i should done in previous post) kill the timer when the player left the game full code: function JoinStartTime() local thePlayer = source local TimeSec = setElementData(thePlayer,"Seconds",0) local TimeMins = setElementData(thePlayer,"Minuts",0) local TimeHour = setElementData ( thePlayer, "Hours", 0 ) local StartSecondsTime = setTimer(function() if isElement(thePlayer) then local SecondsTime5 = getElementData(thePlayer,"Seconds") if (SecondsTime5) then local getSecondsTime5 = getElementData(thePlayer, "Seconds") if getSecondsTime5 then setElementData(thePlayer,"Seconds",tonumber(getSecondsTime5+1)) else outputChatBox("I can't get the Seconds!") end end else killTimer(StartSecondsTime) end end,1000,0) end addEventHandler("onPlayerJoin", getRootElement(),JoinStartTime)
  12. Wojak

    Timer Set Data

    StartSecondsTime = setTimer(function() if isElement(thePlayer) then local SecondsTime5 = getElementData(thePlayer,"Seconds") if (SecondsTime5) then local getSecondsTime5 = getElementData(thePlayer, "Seconds") if getSecondsTime5 then setElementData(thePlayer,"Seconds",tonumber(getSecondsTime5+1)) else outputChatBox("I can't get the Seconds!") end end end end,1000,0)
  13. Wojak

    Timer Set Data

    you will never lern... replace function JoinStartTime(thePlayer) with function JoinStartTime() local thePlayer = source and change all source in this function to thePlayer note that source will not work in anonimus function (in setTimer) so you need to asign it to thePlayer
  14. Wojak

    question

    bad idea- this will affect all players... there is a function for that: https://wiki.multitheftauto.com/wiki/Tex ... veObserver to detect when the file is downloaded, trigger a event at the end of clientside file
  15. addEvent("onRaceStateChanging",true) addEventHandler("onRaceStateChanging", getRootElement(),function ( state ) if (state == "Running") then --paste your stuff here end end) if i remember there is also a state called "MidMapVote" - vhen someone is trying to vote for a nother map, after the vote is cancled state is changong to "Running" so it may be a litle problem... the state when the contdown is starting (before it dysplay 3) is "GridCountdown"
  16. Wojak

    question

    if by loading you mean downloading files by player who joined: https://wiki.multitheftauto.com/wiki/OnPlayerJoin https://wiki.multitheftauto.com/wiki/TextCreateDisplay https://wiki.multitheftauto.com/wiki/TextCreateTextItem https://wiki.multitheftauto.com/wiki/TextDisplayAddText https://wiki.multitheftauto.com/wiki/Tex ... ddObserver
  17. Wojak

    Fast Question.

    you can use this events to keep track on streamed elements https://wiki.multitheftauto.com/wiki/OnC ... ntStreamIn https://wiki.multitheftauto.com/wiki/OnC ... tStreamOut there is also a useful function https://wiki.multitheftauto.com/wiki/IsElementStreamedIn
  18. you need to be shure that the client downloaded all files. add this on the end of client side file outside any function: triggerServerEvent("onMyResourceFileDownload",getLocalPlayer()) and use this in server side: addEvent("onMyResourceFileDownload",true) addEventHandler("onMyResourceFileDownload",getRootElement(),getingPlayerBizPos) instead of setTimer( getingPlayerBizPos, 5000, 1 ) and triggering client event can be like this triggerClientEvent(source, "playerPos", source, bizx, bizy, bizz, bizname) instead of for k,i in ipairs ( getElementsByType( "player" ) ) do triggerClientEvent(i, "playerPos", getRootElement(), bizx, bizy, bizz, bizname) end
  19. I’ve made a little update, all maps from privies version will work with this one, see the first post for more info. screenshot 4 is in high resolution, there was only 1/4 visible in normal img tag… Any notes and suggestions are welcome.
  20. this is a copy-paste from my resource, last time i checked it worked: addEventHandler("onclientfirstplayerDEAD", getRootElement(), function(ttime) dely_MissionTimer = exports.missiontimer:createMissionTimer (ttime,true,"%m:%s",0.5,0.08,true,"default-bold",1,255,255,255) shoot = false end) addEventHandler("onclientpausestop", getRootElement(), function() if isElement(dely_MissionTimer) then destroyElement(dely_MissionTimer) end shoot = true end) this is client side, but it also worked serverside...
  21. hmm i must be a little slow today - i dont understand you... you want to trigger event for all clients, but only add event in one client? i is like this triggerClientEvent( "selectSkill",player, skillsID) this triggerClientEvent(player, "selectSkill", skillsID) trigger the event for one client and set skillsID as source in a handler function...
  22. I think this should be added to proper editor plugins - it is uploaded for a week and no one reported any serious bug viewtopic.php?f=108&t=32529 also i tested the method with running multiple clients using multiple accounts on windows 7 (64) and it do not work on this OS
  23. i like riddles function getSkillFunc(player,Levelids) local skillsID = tonumber( Levelids ) if skillsID then triggerClientEvent(player, "selectSkill", player, skillsID) return true else return false end end did I won?
  24. Wojak

    help plss

    if the server is on the same computer as the editor, login as admin on youre server and type /start i asume the map is saved, and you remember the name... if you have admin panel started press 'p' and go to maps tab, find youre map and pres start
  25. "getElementsByType("player")" returns a table with all players in the server "for id, player in ipairs(getElementsByType("player")) do" - this means "do it for all elements in table (all players)", id is a table index, "player" is some player in the cell with index "id" so " getElementModel(player )" is correct
×
×
  • Create New...