DakiLLa Posted October 9, 2008 Share Posted October 9, 2008 Hi there! I have an idea: portal gun like in Portal game i have made some script but it doesn not work, there is errors in code i think..i dont know, but i think that i have errors in get element positions of created markers too. can you help me to realise this script? I think it can be a nice gamemode with diffrent maps in future if i'll finish this script. delay = 10000 function setDataOnJoin ( ) setElementData ( source, "playerData", 1 ) outputChatBox ( "Your data was set to 1", source, 255, 255, 0 ) end addEventHandler ( "onPlayerJoin", getRootElement (), setDataOnJoin ) function creating ( weapon, ammo, ammoInClip, hitX, hitY, hitZ, hitElement ) local getData = getElementData ( source, "playerData" ) if ( getData == 1 ) then if ( weapon == 27 ) then enterMarker = createMarker ( hitX, hitY, hitZ, "ring", 255, 0, 0 ) addEventHandler ( "onMarkerHit", enterMarker, teleporting ) setElementData ( source, "playerData", 2 ) outputChatBox ( "You have created a first portal!", source, 255, 0, 0 ) if ( getData == 1 ) then local hEhitX, hEhitY, hEhitZ = getElementPosition ( hitElement ) exitMarker = createMarker ( hEhitX, hEhitY, hEhitZ, "ring", 0, 0, 255 ) outputChatBox ( "You have created a second portal!", source, 255, 0, 0 ) setElementData ( source, "playerData", 1 ) addEventHandler ( "onMarkerHit", exitMarker, reTeleporting ) end end end setTimer ( destroyElement, delay, 1, enterMarker ) setTimer ( destroyElement, delay, 1, exitMarker ) end addEventHandler ( "onClientPlayerWeaponFire", getRootElement(), creating ) function teleporting ( thePlayer, matchingDimension ) local ExposX, ExPosY, ExPosZ = getElementPosition ( exitMarker ) setElementPosition ( thePlayer, ExposX, ExPosY, ExPosZ ) end function reTeleporting ( thePlayer, matchingDimension ) local EnposX, EnPosY, EnPosZ = getElementPosition ( enterMarker ) setElementPosition ( thePlayer, EnposX, EnPosY, EnPosZ ) end Link to comment
Gamesnert Posted October 9, 2008 Share Posted October 9, 2008 Just a thing: Isn't line 17 quite pointless? Isn't that like doing: if ( something==0 ) then if ( something==0 ) then ... end end Anyway, it's quite obvious why it doesn't work to be honest... It's only the problem that a lot of people forget it... (including me ) addEventHandler ( "onPlayerJoin", getRootElement (), setDataOnJoin ) 2 things: 1. This event doesn't exist client-side... Didn't you mean onClientPlayerJoin? 2. If the command WOULD be right, why using onClientPlayerJoin and getRootElement()? That would make it trigger for every player... Except for the player self... =/ (see onClientPlayerJoin) Link to comment
DakiLLa Posted October 9, 2008 Author Share Posted October 9, 2008 oops. in line 17 i mean: if ( getData == 1 ) then ... if ( getData == 2 ) then ... "onClientPlayerJoin" ye, i have forgotten to use this function in client side and all the same..i cant see a message in chatbox when i connect to the server, so, script doesnt work from first lines... Link to comment
Lordy Posted October 9, 2008 Share Posted October 9, 2008 So is your code client side or server side If it's client side, then outputChatBox doesn't have visibleTo argument. And what does debugscript tell? Link to comment
DakiLLa Posted October 9, 2008 Author Share Posted October 9, 2008 debugscript is clear, and it's client side and what? i have tested outputChatBox ( "1" ) without all, but nothing Link to comment
Gamesnert Posted October 9, 2008 Share Posted October 9, 2008 "onClientPlayerJoin" ye, i have forgotten to use this function in client side and all the same..i cant see a message in chatbox when i connect to the server, so, script doesnt work from first lines... Let me remind you of something I already told you. 2 things:1. This event doesn't exist client-side... Didn't you mean onClientPlayerJoin? 2. If the command WOULD be right, why using onClientPlayerJoin and getRootElement()? That would make it trigger for every player... Except for the player self... =/ (see onClientPlayerJoin) This event is triggered when a player joins a server. It is triggered for all players other than the local player. I'd suggest using onClientResourceStart, don't you think? Link to comment
DakiLLa Posted October 9, 2008 Author Share Posted October 9, 2008 ok..i think that element data's is not needed now, so, i deleted it. Script without data's function creating ( weapon, ammo, ammoInClip, hitX, hitY, hitZ, hitElement ) if ( not isElement ( enterMarker ) ) and ( weapon == 27 ) then enterMarker = createMarker ( hitX, hitY, hitZ, "ring", 2.0, 255, 0, 0, 150 ) outputChatBox ( "You have created a first portal!", 255, 0, 0 ) elseif ( isElement ( enterMarker ) ) then exitMarker = createMarker ( hitX, hitY, hitZ, "ring", 2.0, 0, 0, 255, 150 ) outputChatBox ( "You have created a second portal!", 255, 0, 0 ) end end addEventHandler ( "onClientPlayerWeaponFire", getRootElement(), creating ) and now, i need code for teleporting from first marker to second. I have one, but it have errors in eventHandler, like bad argument "enterMarker" and "exitMarker". I dont need to teleport from all markers, so, i didnt wrote getRootElement. function Teleporting ( thePlayer, matchingDimension ) local EnposX, EnPosY, EnPosZ = getElementPosition ( enterMarker ) setElementPosition ( thePlayer, EnposX, EnPosY, EnPosZ ) end addEventHandler ( "onClientMarkerHit", enterMarker, Teleporting ) function reteleporting ( thePlayer, matchingDimension ) local ExposX, ExPosY, ExPosZ = getElementPosition ( exitMarker ) setElementPosition ( thePlayer, ExposX, ExPosY, ExPosZ ) end addEventHandler ( "onClientMarkerHit", exitMarker, reteleporting ) Link to comment
50p Posted October 9, 2008 Share Posted October 9, 2008 FROM VERSION DP3 ONWARDSonClientMarkerHit onClientMarkerLeave Anyway, if you use addEventHandler outside a function the elements that you add this handler should exist. When resource starts it goes through the file (script), it tries to attach handler to "undefined" element because the element will be created when player shoots (which is after resource start and all the resource files are loaded). Link to comment
Playsinator Posted September 24, 2009 Share Posted September 24, 2009 Are you ready with this? Can I have the resource, please? Thanks in advantage Playsi Link to comment
subenji99 Posted September 24, 2009 Share Posted September 24, 2009 as 50p pointed out, the element has to exist before you attach a handler to it. The solution here is to attach your handler immediately after creating the marker: function creating ( weapon, ammo, ammoInClip, hitX, hitY, hitZ, hitElement ) if ( not isElement ( enterMarker ) ) and ( weapon == 27 ) then enterMarker = createMarker ( hitX, hitY, hitZ, "ring", 2.0, 255, 0, 0, 150 ) addEventHandler ( "onClientMarkerHit", enterMarker, Teleporting ) outputChatBox ( "You have created a first portal!", 255, 0, 0 ) elseif ( isElement ( enterMarker ) ) then exitMarker = createMarker ( hitX, hitY, hitZ, "ring", 2.0, 0, 0, 255, 150 ) addEventHandler ( "onClientMarkerHit", exitMarker, reteleporting ) outputChatBox ( "You have created a second portal!", 255, 0, 0 ) end end addEventHandler ( "onClientPlayerWeaponFire", getRootElement(), creating ) function Teleporting ( thePlayer, matchingDimension ) local EnposX, EnPosY, EnPosZ = getElementPosition ( enterMarker ) setElementPosition ( thePlayer, EnposX, EnPosY, EnPosZ ) end function reteleporting ( thePlayer, matchingDimension ) local ExposX, ExPosY, ExPosZ = getElementPosition ( exitMarker ) setElementPosition ( thePlayer, ExposX, ExPosY, ExPosZ ) end This will also fix an error you whould have run into where only the first enter/exit marker would work if you tried to do things otherwise. Remember to remove your event handlers as you remove the markers too! By the way, there are still errors here, especially in your teleporting code. but if I told you how to do everything, what would you learn? EDIT: Damn, didn't notice the post date and that the previous post was a massive bump! But maybe the developer might work on this again now 1.0 is released. Link to comment
Playsinator Posted September 25, 2009 Share Posted September 25, 2009 Sorry but i am no scripter (4 now) and i am not the best in english language. So what do i have to do to use the Portal gun? 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