MrDante Posted March 29, 2016 Share Posted March 29, 2016 (edited) Galera, eu quero que o seguinte, quando o jogador que estiver com um Elemento Data ele possa executar o comando /suborno nome_do_jogador dinheiro que seria um suborno para poder ser removido o Elemento Data no caso, quem tem ele não pode executar comando nenhum, enfim isso não é o pedido de ajuda Eu queria saber o que está errado, pois deu erro de bad argument "getPlayerMoney"quantidade de dinheiro" got number" function subornarpolicial (thePlayer, _, nick, amount) if nick then if getPlayerFromPartialName ( nick ) then if amount then if getPlayerMoney(tonumber(amount)) then local nick_do_policial = getPlayerName(thePlayer) local policial_a_ser_subornado = getPlayerFromPartialName ( nick ) local nick_do_jogador = getPlayerName(policial_a_ser_subornado) local money_suborno = getPlayerMoney(tonumber(amount)) if getElementData(thePlayer, "algemado") or getElementData(thePlayer, "navtr") then outputChatBox('#000000[#ff0000POLICIA#000000] #c1c1c1O Jogador algemado lhe ofereceu "..money_suborno.." para você liberar ele, digite /aceitarsuborno para aceitar ou /recusarsuborno para recusar.', policial_a_ser_subornado, 255, 255, 255,true) else outputChatBox('#000000[#ff0000POLICIA#000000] #c1c1c1Você precisa estar preso ou algemado para executar este comando!', thePlayer, 255, 255, 255, true) end end end else outputChatBox('#000000[#ff0000POLICIA#000000] #c1c1c1Comando correto: /suborno nick_do_policial total_de_dinheiro!', thePlayer, 255, 255, 255, true) end else outputChatBox('#000000[#ff0000POLICIA#000000] #c1c1c1Comando correto: /suborno nick_do_policial total_de_dinheiro!', thePlayer, 255, 255, 255, true) end end addCommandHandler ('suborno', subornarpolicial) tambem tentei isso function subornarpolicial (thePlayer, _, nick, money, amount) if nick then if money then if getPlayerFromPartialName ( nick ) then if getPlayerMoney(tonumber(amount)) then local nick_do_policial = getPlayerName(thePlayer) local policial_a_ser_subornado = getPlayerFromPartialName ( nick ) local nick_do_jogador = getPlayerName(policial_a_ser_subornado) local money_suborno = getPlayerMoney(tonumber(amount)) if getElementData(thePlayer, "algemado") or getElementData(thePlayer, "navtr") then outputChatBox('#000000[#ff0000POLICIA#000000] #c1c1c1O Jogador algemado lhe ofereceu "..money_suborno.." para você liberar ele, digite /aceitarsuborno para aceitar ou /recusarsuborno para recusar.', policial_a_ser_subornado, 255, 255, 255,true) else outputChatBox('#000000[#ff0000POLICIA#000000] #c1c1c1Você precisa estar preso ou algemado para executar este comando!', thePlayer, 255, 255, 255, true) end end end else outputChatBox('#000000[#ff0000POLICIA#000000] #c1c1c1Comando correto: /suborno nick_do_policial total_de_dinheiro!', thePlayer, 255, 255, 255, true) end else outputChatBox('#000000[#ff0000POLICIA#000000] #c1c1c1Comando correto: /suborno nick_do_policial total_de_dinheiro!', thePlayer, 255, 255, 255, true) end end addCommandHandler ('suborno', subornarpolicial) Edited April 5, 2016 by Guest Link to comment
#RooTs Posted March 29, 2016 Share Posted March 29, 2016 if getPlayerMoney(tonumber(amount)) then você não definiu o elemento "jogador"; acho que definiu a quantidade de dinheiro e não o jogador. Link to comment
#RooTs Posted March 29, 2016 Share Posted March 29, 2016 eu acho que você quis tentar isto. local money = getPlayerMoney(thePlayer) if (money > 1000) then -- maior ou menor < > --code end Link to comment
MrDante Posted March 29, 2016 Author Share Posted March 29, 2016 if getPlayerMoney(tonumber(amount)) then você não definiu o elemento "jogador"; acho que definiu a quantidade de dinheiro e não o jogador. Sim, eu fiz para definir a quantidade do dinheiro que o jogador vai oferecer, porem nao sei se está certo Link to comment
#RooTs Posted March 29, 2016 Share Posted March 29, 2016 Sim, eu fiz para definir a quantidade do dinheiro que o jogador vai oferecer, porem nao sei se está certo olhe os topicos acima --' Link to comment
MrDante Posted March 29, 2016 Author Share Posted March 29, 2016 Sim, eu fiz para definir a quantidade do dinheiro que o jogador vai oferecer, porem nao sei se está certo olhe os topicos acima --' Blz, eu fiz um teste aki com o total de dinheiro 5000 da esse erro Bad Argument @ "getPlayerMoney" [Expected Player at argument 1, got number"5000" Codigo function subornarpolicial (thePlayer, _, nick, amount) if nick then if getPlayerFromPartialName ( nick ) then if amount then local money = getPlayerMoney(thePlayer) if (money > 0) then local nick_do_policial = getPlayerName(thePlayer) local policial_a_ser_subornado = getPlayerFromPartialName ( nick ) local nick_do_jogador = getPlayerName(policial_a_ser_subornado) local money_suborno = getPlayerMoney(tonumber(amount)) if getElementData(thePlayer, "algemado") or getElementData(thePlayer, "navtr") then outputChatBox('#000000[#ff0000POLICIA#000000] #c1c1c1O Jogador algemado lhe ofereceu "..money_suborno.." para você liberar ele, digite /aceitarsuborno para aceitar ou /recusarsuborno para recusar.', policial_a_ser_subornado, 255, 255, 255,true) else outputChatBox('#000000[#ff0000POLICIA#000000] #c1c1c1Você precisa estar preso ou algemado para executar este comando!', thePlayer, 255, 255, 255, true) end end end else outputChatBox('#000000[#ff0000POLICIA#000000] #c1c1c1Comando correto: /suborno nick_do_policial total_de_dinheiro!', thePlayer, 255, 255, 255, true) end else outputChatBox('#000000[#ff0000POLICIA#000000] #c1c1c1Comando correto: /suborno nick_do_policial total_de_dinheiro!', thePlayer, 255, 255, 255, true) end end addCommandHandler ('suborno', subornarpolicial) Link to comment
#RooTs Posted March 29, 2016 Share Posted March 29, 2016 tem que presta mais atenção quando está programando..... olha a linha 10 local money_suborno = getPlayerMoney(tonumber(amount)) Link to comment
MrDante Posted March 29, 2016 Author Share Posted March 29, 2016 tem que presta mais atenção quando está programando..... olha a linha 10 local money_suborno = getPlayerMoney(tonumber(amount)) Desculpe a lerdeza Link to comment
MrDante Posted March 29, 2016 Author Share Posted March 29, 2016 Agora vem outro problema, quando o player digitar /suborno policia total_de_dinheiro no chat aparece que ofereceu o dinheiro todo dele '- agora complicou tudo, e a ideia é oferecer uma tal grana, não o dinheiro todo, e o policia pode aceitar ou não Link to comment
#RooTs Posted March 29, 2016 Share Posted March 29, 2016 você pode usar takePlayerMoney ( thePlayer, tonumber(amount) ) ou definir um valor para ser retirado! takePlayerMoney ( thePlayer, 5000 ) Link to comment
MrDante Posted March 29, 2016 Author Share Posted March 29, 2016 você pode usar takePlayerMoney ( thePlayer, tonumber(amount) ) ou definir um valor para ser retirado! takePlayerMoney ( thePlayer, 5000 ) o takePlayerMoney eu vou usar no aceitar suborno, pois se eu usar ele, o dinheiro vai ser retirado ao usar o comando sem o policial ter aceitado. E agora?? Link to comment
#RooTs Posted March 29, 2016 Share Posted March 29, 2016 usa setElementData(thePlayer, "suborno", true ) no /aceitar_suborno. mais ou menos assim if getElementData(thePlayer, "suborno" ) takePlayerMoney ( thePlayer, 5000 ) outputChatBox ( "o suborno foi aceito" ) else outputChatBox ( "o suborno não foi aceito" ) end estude um pouco setElementData getElementData que você consegue fazer qualquer mode com essa função Link to comment
MrDante Posted March 30, 2016 Author Share Posted March 30, 2016 usa setElementData(thePlayer, "suborno", true ) no /aceitar_suborno. mais ou menos assim if getElementData(thePlayer, "suborno" ) takePlayerMoney ( thePlayer, 5000 ) outputChatBox ( "o suborno foi aceito" ) else outputChatBox ( "o suborno não foi aceito" ) end estude um pouco setElementData getElementData que você consegue fazer qualquer mode com essa função Isso eu sei, eu ja sei sobre isso, o aceitar suborno não vem ao caso. o que eu quero saber é como eu vou usar para oferecer tal quantia no /suborno.. Link to comment
#RooTs Posted March 30, 2016 Share Posted March 30, 2016 tente usar takePlayerMoney ( thePlayer, tonumber(amount) ) Link to comment
MrDante Posted March 30, 2016 Author Share Posted March 30, 2016 tente usar takePlayerMoney ( thePlayer, tonumber(amount) ) , como eu te expliquei, se eu usar ele no /suborno, vai ser retirado o dinheiro sem ser aceitado, que ja é outro comando que não vem ao caso Link to comment
FelipeMallmann Posted March 30, 2016 Share Posted March 30, 2016 Voce nao tem que fazer getPlayerMoney na variavel money_suborno, use somente local money_suborno = tonumber(amount) Ou entao nem use uma variavel para guardar a quantia que ele digitar, use sempre o amount. Mostre como está seu codigo agora, pois no ultimo que voce mandou nao tem nada retirando dinheiro do player. Link to comment
MrDante Posted March 30, 2016 Author Share Posted March 30, 2016 Voce nao tem que fazer getPlayerMoney na variavel money_suborno, use somente local money_suborno = tonumber(amount) Ou entao nem use uma variavel para guardar a quantia que ele digitar, use sempre o amount. Mostre como está seu codigo agora, pois no ultimo que voce mandou nao tem nada retirando dinheiro do player. Entendi. mas então, o ultimo codigo vai ser outra função, que ainda não mexi mas acredito que seria mais ou menos assim, criei um Elemento Data para o policial, agora uso ela na outra funçao function aceitar_suborno(thePlayer, _, nick, amount) if getElementData(thePlayer, "subornado") then takePlayerMoney(nick, tonumber(amount)) removeElementData(thePlayer, "subornado") end end addCommandHandler("aceitarsuborno", aceitar_suborno) não sei se está certo, foi só um teste Link to comment
n3wage Posted March 31, 2016 Share Posted March 31, 2016 Não tem necessidade nenhuma em usar element data, Você pode fazer da seguinte maneira (Obviamente você vai precisar trocar as variáveis, checar se o jogador que ofereceu o suborno ainda esta online etc): No topo do script: subornos = {}; No comando de oferecer suborno: subornos[ jogador que vai ser subornado ] = { jogador que esta oferecendo o suborno, quantia }; No comando de aceitar o suborno: if subornos[ jogador que vai aceitar o suborno ] then local subornoInfo = subornos[ jogador que vai aceitar o suborno ]; takePlayerMoney ( subornoInfo[1], subornoInfo[2] ); outputChatBox ( "O policial aceitou seu suborno ! Você perdeu $" .. subornoInfo[2], subornoInfo[1], 0, 255, 0 ); subornos[ jogador que vai aceitar o suborno ] = nil; else -- ninguem esta subornando o jogador. end Link to comment
MrDante Posted March 31, 2016 Author Share Posted March 31, 2016 Não tem necessidade nenhuma em usar element data, Você pode fazer da seguinte maneira (Obviamente você vai precisar trocar as variáveis, checar se o jogador que ofereceu o suborno ainda esta online etc):No topo do script: subornos = {}; No comando de oferecer suborno: subornos[ jogador que vai ser subornado ] = { jogador que esta oferecendo o suborno, quantia }; No comando de aceitar o suborno: if subornos[ jogador que vai aceitar o suborno ] then local subornoInfo = subornos[ jogador que vai aceitar o suborno ]; takePlayerMoney ( subornoInfo[1], subornoInfo[2] ); outputChatBox ( "O policial aceitou seu suborno ! Você perdeu $" .. subornoInfo[2], subornoInfo[1], 0, 255, 0 ); subornos[ jogador que vai aceitar o suborno ] = nil; else -- ninguem esta subornando o jogador. end Me desculpa mais, a função de oferecer eu não entendi nada Eu tentei isso: subornos = {} function subornarpolicial (thePlayer, _, nick, amount) if nick then if getPlayerFromPartialName ( nick ) then if amount then local money_player = getPlayerMoney(thePlayer) if (money_player > 0) then local nick_do_policial = getPlayerName(thePlayer) subornos[ nick ] = { thePlayer, amount } local policial_a_ser_subornado = getPlayerFromPartialName ( nick ) local nick_do_jogador = getPlayerName(policial_a_ser_subornado) if getElementData(thePlayer, "algemado") or getElementData(thePlayer, "navtr") then outputChatBox("#000000[#ff0000POLICIA#000000] #c1c1c1O Jogador algemado lhe ofereceu "..money_suborno.." para você liberar ele, digite /aceitarsuborno para aceitar ou /recusarsuborno para recusar.", policial_a_ser_subornado, 255, 255, 255,true) setElementData(policial_a_ser_subornado, "subornado", true) else outputChatBox("#000000[#ff0000POLICIA#000000] #c1c1c1Você precisa estar preso ou algemado para executar este comando!", thePlayer, 255, 255, 255, true) end else outputChatBox("#000000[#ff0000POLICIA#000000] #c1c1c1Você não tem dinheiro suficiente!", thePlayer, 255, 255, 255, true) end end else outputChatBox("#000000[#ff0000POLICIA#000000] #c1c1c1Comando correto: /suborno nick_do_policial total_de_dinheiro!", thePlayer, 255, 255, 255, true) end else outputChatBox("#000000[#ff0000POLICIA#000000] #c1c1c1Comando correto: /suborno nick_do_policial total_de_dinheiro!", thePlayer, 255, 255, 255, true) end end addCommandHandler ('suborno', subornarpolicial) function aceitar_suborno(thePlayer) if subornos[thePlayer] then local subornoInfo = subornos[thePlayer] takePlayerMoney ( subornoInfo[1], subornoInfo[2] ); outputChatBox ( "O policial aceitou seu suborno ! Você perdeu $" .. subornoInfo[2], subornoInfo[1], 0, 255, 0 ); subornos[thePlayer] = nil; else -- ninguem esta subornando o jogador. end addCommandHandler("aceitarsuborno", aceitar_suborno) Link to comment
n3wage Posted April 1, 2016 Share Posted April 1, 2016 Tente: local subornos = {}; function subornarpolicial ( thePlayer, _, nick, amount ) if ( nick and amount ) then if ( getPlayerMoney ( thePlayer ) >= ( tonumber ( amount ) or math.huge ) ) then local target = getPlayerFromPartialName ( nick ); if ( target ) then if ( getElementData( thePlayer, "algemado" ) or getElementData( thePlayer, "navtr" ) ) then subornos[ target ] = { thePlayer, tonumber( amount ) }; outputChatBox("#000000[#ff0000POLICIA#000000] #c1c1c1O Jogador algemado lhe ofereceu $" .. amount .. " para você liberar ele, digite /aceitarsuborno para aceitar ou /recusarsuborno para recusar.", target, 255, 255, 255, true ); else outputChatBox( "#000000[#ff0000POLICIA#000000] #c1c1c1Você precisa estar preso ou algemado para executar este comando!", thePlayer, 255, 255, 255, true ); end else outputChatBox( "#000000[#ff0000POLICIA#000000] #c1c1c1Nenhum jogador encontrado com este nome!", thePlayer, 255, 255, 255, true ); end else outputChatBox( "#000000[#ff0000POLICIA#000000] #c1c1c1Você não tem dinheiro suficiente!", thePlayer, 255, 255, 255, true ); end else outputChatBox( "#000000[#ff0000POLICIA#000000] #c1c1c1Comando correto: /suborno nick_do_policial total_de_dinheiro!", thePlayer, 255, 255, 255, true ); end end addCommandHandler ( "suborno", subornarpolicial ); function aceitar_suborno( thePlayer ) if ( subornos[thePlayer] ) then local subornoInfo = subornos[thePlayer]; takePlayerMoney ( subornoInfo[1], subornoInfo[2] ); outputChatBox ( "O policial aceitou seu suborno ! Você perdeu $" .. subornoInfo[2], subornoInfo[1], 0, 255, 0 ); subornos[ thePlayer ] = nil; else -- ninguem esta subornando o jogador. end end addCommandHandler( "aceitarsuborno", aceitar_suborno ); Link to comment
MrDante Posted April 1, 2016 Author Share Posted April 1, 2016 Tente: local subornos = {}; function subornarpolicial ( thePlayer, _, nick, amount ) if ( nick and amount ) then if ( getPlayerMoney ( thePlayer ) >= ( tonumber ( amount ) or math.huge ) ) then local target = getPlayerFromPartialName ( nick ); if ( target ) then if ( getElementData( thePlayer, "algemado" ) or getElementData( thePlayer, "navtr" ) ) then subornos[ target ] = { thePlayer, tonumber( amount ) }; outputChatBox("#000000[#ff0000POLICIA#000000] #c1c1c1O Jogador algemado lhe ofereceu $" .. amount .. " para você liberar ele, digite /aceitarsuborno para aceitar ou /recusarsuborno para recusar.", target, 255, 255, 255, true ); else outputChatBox( "#000000[#ff0000POLICIA#000000] #c1c1c1Você precisa estar preso ou algemado para executar este comando!", thePlayer, 255, 255, 255, true ); end else outputChatBox( "#000000[#ff0000POLICIA#000000] #c1c1c1Nenhum jogador encontrado com este nome!", thePlayer, 255, 255, 255, true ); end else outputChatBox( "#000000[#ff0000POLICIA#000000] #c1c1c1Você não tem dinheiro suficiente!", thePlayer, 255, 255, 255, true ); end else outputChatBox( "#000000[#ff0000POLICIA#000000] #c1c1c1Comando correto: /suborno nick_do_policial total_de_dinheiro!", thePlayer, 255, 255, 255, true ); end end addCommandHandler ( "suborno", subornarpolicial ); function aceitar_suborno( thePlayer ) if ( subornos[thePlayer] ) then local subornoInfo = subornos[thePlayer]; takePlayerMoney ( subornoInfo[1], subornoInfo[2] ); outputChatBox ( "O policial aceitou seu suborno ! Você perdeu $" .. subornoInfo[2], subornoInfo[1], 0, 255, 0 ); subornos[ thePlayer ] = nil; else -- ninguem esta subornando o jogador. end end addCommandHandler( "aceitarsuborno", aceitar_suborno ); Vou testar... mas poderia me explicar o que essa função faz? Só por curiosidade if ( getPlayerMoney ( thePlayer ) >= ( tonumber ( amount ) or math.huge ) ) Link to comment
#RooTs Posted April 2, 2016 Share Posted April 2, 2016 se o dinheiro for maior que a quantia oferecida 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