Razor64 Posted September 30, 2014 Share Posted September 30, 2014 (edited) Hola buen dia, bueno quisiera que me ayudaran con un scipr que estoy haciendo para que te de habilidad con el arma con la que mataste al zombies, es decir si matas a un zombie con una M4 te dara un punto en habilidad o stats, el problema es que si otro jugador tambien le da stats del arma usada sin que el mate ningun zombie es decir si yo mato zombie le da habilidad en el arma usada a todos en el server, cosa que no tiene que pasar ya busque varias forma de como arreglarlo pero nada mas no puedo, ademas de que tampoco conosco mucho de scripting y por eso les pido su ayuda, y una cosa mas si reinicio el resource o lo paro y lo cargo de nuevo se reinician todos los stats quisiera ver si tambien me pueden ayudar con eso. bueno espero me ayuden y muchas gracias por su atencion a qui el codigo todo esto lo puse en server-side local stat22 = 0 local stat23 = 0 local stat24 = 0 local stat25 = 0 local stat26 = 0 local stat27 = 0 local stat28 = 0 local stat29 = 0 local stat30 = 0 local stat31 = 0 local stat34 = 0 ------------ Pistola addEvent("onZombieWasted",true) addEventHandler("onZombieWasted",root, function (killer, weapon) if weapon == 22 then givePlayerMoney(killer,10) setPedStat (killer, 69, stat22) stat22 = stat22 + 1 if (tonumber(getPedStat( killer, 69 )) == 999) then outputChatBox ( "#FFFF00Has conseguido la habilidad maxima en #FF0000Pistola", killer, 255, 255, 255, true) end end end) ------------ Silenced addEvent("onZombieWasted",true) addEventHandler("onZombieWasted",root, function (killer, weapon) if weapon == 23 then givePlayerMoney(killer,10) setPedStat(killer, 70, stat23 ) stat23 = stat23 + 1 if (tonumber(getPedStat( killer, 70 )) == 999) then outputChatBox ( "#FFFF00#FFFF00Has conseguido la habilidad maxima en #FF0000Silenced", killer, 255, 255, 255, true) end end end) ------------ Desert Eagle addEvent("onZombieWasted",true) addEventHandler("onZombieWasted",root, function (killer, weapon) if weapon == 24 then givePlayerMoney(killer,10) setPedStat(killer, 71, stat24 ) stat24 = stat24 + 1 if (tonumber(getPedStat( killer, 71 )) == 999) then outputChatBox ( "#FFFF00Has conseguido la habilidad maxima en #FF0000Desert Eagle", killer, 255, 255, 255, true) end end end) ------------ Escopeta addEvent("onZombieWasted",true) addEventHandler("onZombieWasted",root, function (killer, weapon) if weapon == 25 then givePlayerMoney(killer,10) setPedStat(killer, 72, stat25 ) stat25 = stat25 + 1 if (tonumber(getPedStat( killer, 72 )) == 999) then outputChatBox ( "#FFFF00Has conseguido la habilidad maxima en #FF0000Escopeta", killer, 255, 255, 255, true) end end end) ----------- Escopeta recortada addEvent("onZombieWasted",true) addEventHandler("onZombieWasted",root, function (killer, weapon) if weapon == 26 then givePlayerMoney(killer,10) setPedStat(killer, 73, stat26 ) stat26 = stat26 + 1 if (tonumber(getPedStat( killer, 73 )) == 999) then outputChatBox ( "#FFFF00Has conseguido la habilidad maxima en #FF0000Escopeta Recortada", killer, 255, 255, 255, true) end end end) ----------- Spaz-12 addEvent("onZombieWasted",true) addEventHandler("onZombieWasted",root, function (killer, weapon) if weapon == 27 then givePlayerMoney(killer,10) setPedStat(killer, 74, stat27 ) stat27 = stat27 + 1 if (tonumber(getPedStat( killer, 74 )) == 999) then outputChatBox ( "#FFFF00Has conseguido la habilidad maxima en #FF0000Escopeta SPAZ-12", killer, 255, 255, 255, true) end end end) ----------- Uzi addEvent("onZombieWasted",true) addEventHandler("onZombieWasted",root, function (killer, weapon) if weapon == 28 then givePlayerMoney(killer,10) setPedStat(killer, 75, stat28 ) stat28 = stat28 + 1 if (tonumber(getPedStat( killer, 75 )) == 999) then outputChatBox ( "#FFFF00Has conseguido la habilidad maxima en #FF0000Metralleta Uzi", killer, 255, 255, 255, true) end end end) ----------- MP5 addEvent("onZombieWasted",true) addEventHandler("onZombieWasted",root, function (killer, weapon) if weapon == 29 then givePlayerMoney(killer,10) setPedStat(killer, 76, stat29 ) stat29 = stat29 + 1 if (tonumber(getPedStat( killer, 76 )) == 999) then outputChatBox ( "#FFFF00Has conseguido la habilidad maxima en #FF0000Metralleta MP5", killer, 255, 255, 255, true) end end end) ----------- AK-47 addEvent("onZombieWasted",true) addEventHandler("onZombieWasted",root, function (killer, weapon) if weapon == 30 then givePlayerMoney(killer,10) setPedStat(killer, 77, stat30 ) stat30 = stat30 + 1 if (tonumber(getPedStat( killer, 77 )) == 999) then outputChatBox ( "#FFFF00Has conseguido la habilidad maxima en #FF0000Ametralladora AK-47", killer, 255, 255, 255, true) end end end) ----------- Ametralladora M4 addEvent("onZombieWasted",true) addEventHandler("onZombieWasted",root, function (killer, weapon) if weapon == 31 then givePlayerMoney(killer,10) setPedStat(killer, 78, stat31 ) stat31 = stat31 + 1 if (tonumber(getPedStat( killer, 78 )) == 999) then outputChatBox ( "#FFFF00Has conseguido la habilidad maxima en #FF0000Ametralladora M4", killer, 255, 255, 255, true) end end end) ----------- Sniper addEvent("onZombieWasted",true) addEventHandler("onZombieWasted",root, function (killer, weapon) if weapon == 34 then givePlayerMoney(killer,10) setPedStat(killer, 80, stat34 ) stat34 = stat34 + 1 if (tonumber(getPedStat( killer, 79 )) == 999) then outputChatBox ( "#FFFF00Has conseguido la habilidad maxima en #FF0000Rifle de Francotirador", killer, 255, 255, 255, true) end end end) ------------- Seccion que hace que se guarden los stats -------------------------- function saveWeaponStats(player) if (not player or not isElement(player)) then return end local account = getPlayerAccount(player) if (account and not isGuestAccount(account)) then local stats = "" for stat=69, 79 do local value = getPedStat(player, stat) stats = stats ..",".. stat ..";".. value end setAccountData(account, "weaponStats", stats) end end addEventHandler("onPlayerQuit",root,function () saveWeaponStats(source) end) function loadWeaponStats(player) if (not player or not isElement(player)) then return end local account = getPlayerAccount(player) if (account and not isGuestAccount(account)) then local statsData = getAccountData(account,"weaponStats") local stats = split(statsData, ",") for k, v in ipairs(stats) do local stat = split(v, ";") setPedStat(player, tonumber(stat[1]), tonumber(stat[2])) end end end addEventHandler("onPlayerLogin",root,function () loadWeaponStats(source) end) Edited October 1, 2014 by Guest Link to comment
Tomas Posted September 30, 2014 Share Posted September 30, 2014 En ves de utilizar variables por qué no usas getPedStat? Te dejo un ejemplo en la primera: addEvent("onZombieWasted",true) addEventHandler("onZombieWasted",root, function (killer, weapon) if weapon == 22 then givePlayerMoney(killer,10) setPedStat (killer, 69, getPedStat(killer,69)+1) if (tonumber(getPedStat( killer, 69 )) == 999) then outputChatBox ( "#FFFF00Has conseguido la habilidad maxima en #FF0000Pistola", killer, 255, 255, 255, true) end end end) Link to comment
Razor64 Posted September 30, 2014 Author Share Posted September 30, 2014 Gracias Tomas por responder, es que son muy nuevo en esto de lua pero he usado tu consejo y funciono bien, pero sigue dando stats a todos en el server, cres que me podrias ayudar con eso? espero que si y gracias por la respuesta Link to comment
Tomas Posted September 30, 2014 Share Posted September 30, 2014 Hmmm, es raro si estás definiendo bien el killer... ¿Estás seguro qué "onZombieWasted" tiene como primer argumento el killer? Estoy del cel no puedo ir a ver Link to comment
Razor64 Posted September 30, 2014 Author Share Posted September 30, 2014 Pues no estoy muy seguro, pero he probado con varios argumentos y nada sigue compartiendo los stats con todos, y la verdad no se que poner para que solo le de stats a quien disparo, rayos esto si que es complicado que otra cosa se podria hacer? addEvent("onZombieWasted",true) addEventHandler("onZombieWasted",root, function (killer, weapon) if weapon == 22 then givePlayerMoney(killer,10) setPedStat (killer, 69, getPedStat(killer,69)+1) if (tonumber(getPedStat( killer, 69 )) == 999) then outputChatBox ( "#FFFF00Has conseguido la habilidad maxima en #FF0000Pistola", killer, 255, 255, 255, true) end end end) Link to comment
Tomas Posted October 1, 2014 Share Posted October 1, 2014 Eso es bastante raro, cuando alguien llega a 999 el mensaje sale para todos o solo para él? Link to comment
Razor64 Posted October 1, 2014 Author Share Posted October 1, 2014 eso no lo he chekado pero casi estoy seguro que le ha de salir a todos, y por ejemplo si yo completo el stat de alguna arma ya no sigue sumando puntos a los stats de nadie en el server, pero si estoy solo yo si funciona bien es decir si alguien llega a los 1000 deja de funcionar el script, o sabes de que otra forma puedo hacer esto? gracias por tu atencion Link to comment
Tomas Posted October 1, 2014 Share Posted October 1, 2014 Lo probaste con la que yo te di? Eso no debería pasar, en la de antes seguramente pasaba porque usabas variables con las stats en server-side, pero con esto no debería pasar... Link to comment
Razor64 Posted October 1, 2014 Author Share Posted October 1, 2014 Si lo estaba probando talcual me diste el ejemplo y funcionaba bien pero te digo aparecia el problema que le daba stats a todos, pero aqui el problema yo solo remplase tu ejemplo por el mio pero no hice lo mismo con los demas con la escuasa de "pues si funciona este bien depues arrglo los demas" y pues asi estube probando solo con el arma del ejemplo que me diste y no funcionaba pasaba lo mismo y ahora que vi tu ultimo mensaje dije pues puede que no trabaje bien por que los demas estan mal y eso afecta a todo, pues arregle todo y que crees funciona al 100% bien, mucha gracias Tomas por ayudarme de verdad te lo agradesco y siento mucho a verte hecho perder tiempo si tan solo lo hubiera colocado bien todo desde el inicio ya hubiese quedado desde cuando. gracias por tu atencion Link to comment
Tomas Posted October 1, 2014 Share Posted October 1, 2014 De nada y me alegro que lo hayas solucionado. Link to comment
Recommended Posts