-.Paradox.- Posted December 22, 2013 Share Posted December 22, 2013 Hello i want draw +1500 text every time a zombie get killed, and disappear after 3 seconds thanks for help. addEvent( "onZombieWasted" ); addEventHandler( "onZombieWasted", getRootElement(), function( killer ) givePlayerMoney( killer, 1500 ); end ) addEventHandler("onZombieWasted", getRootElement(), function () dxDrawText("+1500", 1211, 51, 1351, 77, tocolor(0, 0, 0, 255), 1.00, "pricedown", "left", "top", false, false, true, false, false) dxDrawText("+1500", 1211, 49, 1351, 75, tocolor(0, 0, 0, 255), 1.00, "pricedown", "left", "top", false, false, true, false, false) dxDrawText("+1500", 1209, 51, 1349, 77, tocolor(0, 0, 0, 255), 1.00, "pricedown", "left", "top", false, false, true, false, false) dxDrawText("+1500", 1209, 49, 1349, 75, tocolor(0, 0, 0, 255), 1.00, "pricedown", "left", "top", false, false, true, false, false) dxDrawText("+1500", 1210, 50, 1350, 76, tocolor(0, 100, 35, 255), 1.00, "pricedown", "left", "top", false, false, true, false, false) end ) Link to comment
johny46 Posted December 22, 2013 Share Posted December 22, 2013 Have you tried using Textlib? https://forum.multitheftauto.com/viewtopic.php?f=91&t=24262 It's probably the easiest way to achieve what you are talking about. Link to comment
-.Paradox.- Posted December 22, 2013 Author Share Posted December 22, 2013 I know but i dont want use it Link to comment
johny46 Posted December 22, 2013 Share Posted December 22, 2013 Then you have to create an "onClientRender" event handler every time you want to display your text, and then create a timer to destroy the handler after 3 seconds. Link to comment
-.Paradox.- Posted December 22, 2013 Author Share Posted December 22, 2013 not onClientRender because I want when zombie wasted, I guess I have to remove event handler after 3 secs after each kill Link to comment
johny46 Posted December 22, 2013 Share Posted December 22, 2013 That's exactly what I said. You need to add event handler when a zombie gets killed, and then create a timer to remove that event handler. The dx functions are displayed only for one frame, that's why you have to display them "onClientRender". Link to comment
-.Paradox.- Posted December 23, 2013 Author Share Posted December 23, 2013 Like that? I made this code in my iPhone but idk what I must put to show the text only when zombie get killed thanks for help function onTest() dxDrawText("+1500", 1211, 51, 1351, 77, tocolor(0, 0, 0, 255), 1.00, "pricedown", "left", "top", false, false, true, false, false) dxDrawText("+1500", 1211, 49, 1351, 75, tocolor(0, 0, 0, 255), 1.00, "pricedown", "left", "top", false, false, true, false, false) dxDrawText("+1500", 1209, 51, 1349, 77, tocolor(0, 0, 0, 255), 1.00, "pricedown", "left", "top", false, false, true, false, false) dxDrawText("+1500", 1209, 49, 1349, 75, tocolor(0, 0, 0, 255), 1.00, "pricedown", "left", "top", false, false, true, false, false) dxDrawText("+1500", 1210, 50, 1350, 76, tocolor(0, 100, 35, 255), 1.00, "pricedown", "left", "top", false, false, true, false, false) end addEventHandler("onClientRender", getRootElement, onTest) setTimer( function () removeEventHandler("onClientRender", getRootElement, onTest) end , 3000, 1 ) Link to comment
johny46 Posted December 23, 2013 Share Posted December 23, 2013 Yeah, just like that, except you have to do addEventHandler("onClientRender", root, onTest) setTimer(removeEventHandler, 3000, 1, "onClientRender", root, onTest) whenever a zombie gets killed. So the proper code should look like this: function onTest() dxDrawText("+1500", 1211, 51, 1351, 77, tocolor(0, 0, 0, 255), 1.00, "pricedown", "left", "top", false, false, true, false, false) dxDrawText("+1500", 1211, 49, 1351, 75, tocolor(0, 0, 0, 255), 1.00, "pricedown", "left", "top", false, false, true, false, false) dxDrawText("+1500", 1209, 51, 1349, 77, tocolor(0, 0, 0, 255), 1.00, "pricedown", "left", "top", false, false, true, false, false) dxDrawText("+1500", 1209, 49, 1349, 75, tocolor(0, 0, 0, 255), 1.00, "pricedown", "left", "top", false, false, true, false, false) dxDrawText("+1500", 1210, 50, 1350, 76, tocolor(0, 100, 35, 255), 1.00, "pricedown", "left", "top", false, false, true, false, false) end addEvent( "onZombieWasted" ); addEventHandler( "onZombieWasted", root, function( killer ) givePlayerMoney( killer, 1500 ); addEventHandler("onClientRender", root, onTest) setTimer(removeEventHandler, 3000, 1, "onClientRender", root, onTest) end) You are probably still going to tweak this a bit, so it behaves properly when two zombies get killed in a period shorter than three seconds. Link to comment
-.Paradox.- Posted December 24, 2013 Author Share Posted December 24, 2013 Not working Error: Money/script.lua:14 Bad argument @ 'RemoveEventHandler' [Expected function at argument 3, got nil] Link to comment
Chronic Posted December 24, 2013 Share Posted December 24, 2013 function onTest() dxDrawText("+1500", 1211, 51, 1351, 77, tocolor(0, 0, 0, 255), 1.00, "pricedown", "left", "top", false, false, true, false, false) dxDrawText("+1500", 1211, 49, 1351, 75, tocolor(0, 0, 0, 255), 1.00, "pricedown", "left", "top", false, false, true, false, false) dxDrawText("+1500", 1209, 51, 1349, 77, tocolor(0, 0, 0, 255), 1.00, "pricedown", "left", "top", false, false, true, false, false) dxDrawText("+1500", 1209, 49, 1349, 75, tocolor(0, 0, 0, 255), 1.00, "pricedown", "left", "top", false, false, true, false, false) dxDrawText("+1500", 1210, 50, 1350, 76, tocolor(0, 100, 35, 255), 1.00, "pricedown", "left", "top", false, false, true, false, false) end addEvent( "onZombieWasted" ); addEventHandler( "onZombieWasted", root, function( killer ) givePlayerMoney( killer, 1500 ); addEventHandler("onClientRender", root, onTest) setTimer( function ( ) removeEventHandler ( "onClientRender", root, onTest ) end, 3000, 1 ) end) Link to comment
-.Paradox.- Posted December 24, 2013 Author Share Posted December 24, 2013 Not working too no errors in debug Link to comment
Castillo Posted December 24, 2013 Share Posted December 24, 2013 onZombieWasted is a server side event. Link to comment
-.Paradox.- Posted December 25, 2013 Author Share Posted December 25, 2013 So what I should do? Link to comment
johny46 Posted December 25, 2013 Share Posted December 25, 2013 I don't know what zombie gamemode do you use, so I don't know whether "onClientZombieWasted" exists. Assuming it does not, you could use this code serverside: addEvent( "onZombieWasted" ) addEventHandler( "onZombieWasted", getRootElement(), function( killer ) givePlayerMoney( killer, 1500 ) triggerClientEvent(killer,"onClientZombieWasted", resourceRoot) end and this code clientside: function onTest() dxDrawText("+1500", 1211, 51, 1351, 77, tocolor(0, 0, 0, 255), 1.00, "pricedown", "left", "top", false, false, true, false, false) dxDrawText("+1500", 1211, 49, 1351, 75, tocolor(0, 0, 0, 255), 1.00, "pricedown", "left", "top", false, false, true, false, false) dxDrawText("+1500", 1209, 51, 1349, 77, tocolor(0, 0, 0, 255), 1.00, "pricedown", "left", "top", false, false, true, false, false) dxDrawText("+1500", 1209, 49, 1349, 75, tocolor(0, 0, 0, 255), 1.00, "pricedown", "left", "top", false, false, true, false, false) dxDrawText("+1500", 1210, 50, 1350, 76, tocolor(0, 100, 35, 255), 1.00, "pricedown", "left", "top", false, false, true, false, false) end addEvent( "onClientZombieWasted" ) addEventHandler( "onClientZombieWasted", root, function() addEventHandler("onClientRender", root, onTest) setTimer( function () removeEventHandler ( "onClientRender", root, onTest ) end, 3000, 1) end) Again, I don't know what zombie resource do you use, so it may not work properly. Link to comment
-.Paradox.- Posted December 26, 2013 Author Share Posted December 26, 2013 ERROR: Server triggered clientside event onClientZombieWasted, but event is not marked as remotly triggerable And i'm suing this https://community.multitheftauto.com/index.php?p= ... ils&id=347 Link to comment
johny46 Posted December 26, 2013 Share Posted December 26, 2013 Eh, I forgot about that "remotely triggerable" thingy, my bad. Just replace addEvent("onClientZombieWasted") by addEvent("onClientZombieWasted", true) Link to comment
WASSIm. Posted December 26, 2013 Share Posted December 26, 2013 use onClientPedWasted Link to comment
johny46 Posted December 26, 2013 Share Posted December 26, 2013 You would still need to check whether the "source" is a zombie using isPedZombie() , which is a serverside function, so it would still require triggering server events and all that stuff. Or maybe there's some other way to check whether a ped is a zombie (eg. getElementData()), but I don't know of any other because I've never ran that zombie gamemode myself. Link to comment
-.Paradox.- Posted December 26, 2013 Author Share Posted December 26, 2013 Thanks man working 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