Jokerman Posted November 2, 2014 Share Posted November 2, 2014 Sziasztok! Egy RP modot kezdtem írni, de van valami, amit nem tudok megoldani: local autoSchoolMarker = createMarker(-1272, 2713, 51, "arrow", 2.0, 255, 255, 0, 255, everyone) function teleport(hitElement, matchingDimension) setElementPosition(hitElement, -1222, 3466.7, 98.6) outputChatBox("Beléptél az autóiskolába!", hitElement, 0, 255, 0, true) end addEventHandler("onMarkerHit", autoSchoolMarker, teleport()) Maga a script nem hibás, viszont amikor belemegyek a markerbe, az nem csinál semmit (pedig el kellene teleportálnia...). Ha valaki tudna segíteni azt nagyon megköszönném! Link to comment
Max Taylor Posted November 2, 2014 Share Posted November 2, 2014 Még jó, hogy nem csinál semmit. "Maga a script nem hibás" - Erre nem vennék mérget, kapásból ajánlanám a funkciók wiki oldalának átnézését. Először pl. a setElementPosition -t, jól látható, hogy az 1. argumentnek, magának az elementnek kell lennie és olyan element nincs, hogy "hitElement" .. A másik, jól olvashatóan oda van írva, hogy ez egy elavult, bugos funkció, szóval cseréld le spawnPlayer -re. Link to comment
Jokerman Posted November 2, 2014 Author Share Posted November 2, 2014 Rendben, lecseréltem a setElementPosition-t spawnPlayer-re, de azt nem értem, hogy mire cseréljem le a hitElement-et? source-re? Vagy mire? És most kapok egy hibát, azt írja: "attempt to call global 'spawnPlayer' (a nil value)" Link to comment
pa3ck Posted November 5, 2014 Share Posted November 5, 2014 Ne vedd figyelembe Max Taylor hozzaszolasat, hibas amit mond. Miert? spawnPlayer csak szerver oldalon van es alapbol miert kellene azt hasznalnia? Mivel kiirta, hogy spawnPlayer nem letezik, ezert gondolom kliens oldalon van a scripted. Mar akkor ha igen, akkor onMarkerHit nem letezik, csak onClientMarkerHit. Illetve, az eventHandlernel nem kell beleirnod a "()"-t, siman csak a funkcio nevet. hitElement pedig letezik, ugyanis az event valtozo. Azt ajanlom, hogy szerver oldalon legyen a script, a meta-ban kicsereled a fajl tipusat "server"-re es kitorlod a "()"-t a handlerbol es mukodni fog. setElementPosition nem elavult, hanem bugot okoz, ha ezzel spawnolod a pedet vagy a jatekost. Link to comment
DereX Posted January 8, 2016 Share Posted January 8, 2016 Hali, Elég régi topic és már biztos mindenki tudja hogyan kellene ennek működnie, azért berakom ide az én kódomat is. Eléggé sok hibát vétettél. A kezdő koordinátáid nem tudom, hogy miért ott voltak ahol. Pontosan nem tudom, mert egyből az autósiskolához vezettem, de sehogy sem sikerült előhozni, így megváltoztattam azokat. Persze ahova te akarod rakni, átírod. Ha valakit beteleportálsz valahova, az ki is szeretne jönni, ezt a részt pedig nem másoltad- vagy nem is csináltad meg. Feltételezem, hogy az autósiskola belső teréhez szeretted volna teleportálni, ebben az esetben pedig az Interiort is változtatni kell. Bár az a Z koordináta nem elég magas, szóval nem tudom. A hitElement létezik így van, de ha kicsit belegondolunk ez minden egyes elementre tartozik, ami azt a markert érinti. Biztos beakarsz teleportálni egy kocsit is? Egyébként amit lehet, sőt mindent amit meglehet azt serverside írd meg, ezzel sem terhelve a clientside-t. Ha valami nem működik, akkor az hibás, ajánlom a szerver ablakot nézegetni, hogy ír-e ki hibát, vagy játékon belül a debugscript-et. Elegendő, hogyha az acl.xmlben adsz magadnak jogokat, még az admin resource se kell hozzá, csak lépj be és írd be a parancsot. A kód pedig: (serverside) local posX, posY, posZ = -2026.6, -102, 35.1640625 local posfX, posfY, posfZ = -2026.8, -103.6, 1035.171875 local marker_id_0 = createMarker ( posX, posY, posZ+1, "arrow", 1.5, 255, 255, 0, 255 ) marker_id_1 = createMarker ( posfX, posfY, posfZ+1, "arrow", 1.5, 255, 255, 0, 255 ) setElementInterior ( marker_id_1, 3) function WarpInToAutoSchool(sourcePlayer) setElementInterior ( sourcePlayer, 3, posfX, posfY-1.15, posfZ) outputChatBox ( "Beléptél az autóiskolába!", sourcePlayer, 0, 255, 0, true) end function WarpOutFromAutoSchool(sourcePlayer) setElementInterior ( sourcePlayer, 0, posX, posY+1.15, posZ) end addEventHandler ( "onMarkerHit", marker_id_0, WarpInToAutoSchool) addEventHandler ( "onMarkerHit", marker_id_1, WarpOutFromAutoSchool) Tanácsos a koordinátákat külön változóban eltárolni, mivel hogyha többhelyen használod, akkor nem kell ezer helyen átírni, valamint maga a function is sokkal átláthatóbb. A koordináták nyilvánvalóan azért vannak kívül a függvényen, mert akkor nem jönnének létre, csak ha meghívódik a függvény, ami sose történne meg. setElementInterior ( marker_id_1, 3, posfX, posYf, posfZ) Ezzel a belső térben található markert át tettem egy másik interiorba, egyébként nem látszódna. A két function végzi a be és ki teleportálást. Amint láthatod, mindkét esetben az Y koordináta kapott plusz értékeket, mivel ha ezt nem tettem volna meg, akkor a script alapján folyamatosan be és kiteleportálgatott volna. Ez egy nagyon alap script, fejleszteni simán lehet, az előbbi hiba kiküszöbölésére például, meglehet sokkal szebben is csinálni, de ez egy jó alap. Egy kisebb hozzáfűznivaló még, hogyha Interiorból, vagy éppen be szeretnél teleportálni, akkor használd a fentebb bemásolt setElementInterior()-t, mivel opcionálisan pozició változtatást is tud, ezáltal nem kell használni a setElementPosition()-t. Persze ez csak Interioroknál. Üdv. 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