[Ayuda] Problema de codigo + Optimizacion -
Shura - 26.05.2014
Hola gente, tengo 1 problema, en este comando uso 4 if , y dicen que no es recomendable y lo bueno seria usar un stock pero no tengo idea de como hacerlo en este comando xD
a lo que voy es que, descubri que la gente puede abusar de este comando si es 1 servidor Roleplay, entonces decidн ponerle lнmites al comando, pero todos los lнmites los cree con if u_U
espero que me ayuden aca les doy el ejemplo de lo que hize:
Код:
if(Info[playerid][pMedicamentos] <= 0) return SendClientMessageEx(playerid, COLOR_WHITE, "No puedes usar este comando si no tienes gramos de medicamentos"); //Si tiene de cantidad cero(0) o menos no puede tirar medicamentos
if(Info[playerid][pMedicamentos] <= 2) return SendClientMessageEx(playerid, COLOR_WHITE, "Debes tener 2 o mбs gramos de medicamentos para tirarlos al suelo"); //Que tenga mas de 2 gramos si no qe no lo pueda tirar al suelo xD
if(Info[playerid][pMedicamentos] < medicamentos) return SendClientMessage(playerid, -1, "No tienes esa cantidad de medicamentos para tirar al suelo");// Para que no puedan bugearlo, es decir que al tirar los gramos de medicamentos , solo tire lo que tiene en su personaje, a lo que me refiero es que si tiene 10 gramos, que pueda tirar hasta 10 gramos y no mбs, la variable "medicamentos" es la que uso para tirar al suelo.
BUENO GENTE A LO QUE ME REFIERO ES QUE EN LOS DOS PRIMEROS IF ME FUNCIONABAN BIEN, AGREGE EL TERCERO Y FUNCIONA SOLO EL TERCERO Y LOS OTROS 2 DEJARON DE FUNCIONAR D:, ADEMБS DE ESO TENGO UN IF QUE ESTБ REFERIDO A LA CANTIDAD DE OBJETOS QUE SE PUEDAN TIRAR EN EL SUELO, ACA LA LINEA:
Код:
if(f > MAX_OBJMEDICAMENTOS) return SendClientMessageEx(playerid, COLOR_WHITE, "Usted no puede tirar medicamentos ahora, intйntalo mбs tarde.");
Espero que me puedan ayudar, tengo el cуdigo bien sin errores pero como verбn muy mal optimizado, les digo asi, para que quede bien claro, el if 1 qe detalle arriba funciona, el 2 tambien, pero si no estб presente el 3er if, si estan los 3 juntos solo funciona el tercero, es decir que pueden tirar 0 medicamentos al suelo y pueden tirar 1 medicamento al piso, y asн, me gustaria que me ayuden a hacer andar esto, asi nadie puede bugearlo, saludos y gracias a los que me puedan ayudar
Respuesta: [Ayuda] Problema de codigo + Optimizacion -
JustBored - 26.05.2014
Postea el comando entero.
Respuesta: [Ayuda] Problema de codigo + Optimizacion -
C1ruj4n0 - 26.05.2014
Contradices al pawno
pawn Код:
if(Info[playerid][pMedicamentos] <= 0) return SendClientMessageEx(playerid, COLOR_WHITE, "No puedes usar este comando si no tienes gramos de medicamentos"); //Si tiene de cantidad cero(0) o menos no puede tirar medicamentos
if(Info[playerid][pMedicamentos] <= 2) return SendClientMessageEx(playerid, COLOR_WHITE, "Debes tener 2 o mбs gramos de medicamentos para tirarlos al suelo"); //Que tenga mas de 2 gramos si no qe no lo pueda tirar al suelo xD
if(Info[playerid][pMedicamentos] < medicamentos) return SendClientMessage(playerid, -1, "No tienes esa cantidad de medicamentos para tirar al suelo");// Para que no puedan bugearlo, es decir que al tirar los gramos de medicamentos , solo tire lo que tiene en su personaje, a lo que me refiero es que si tiene 10 gramos, que pueda tirar hasta 10 gramos y no mбs, la variable "medicamentos" es la que uso para tirar al suelo.
Lo que pawn entiende es que Si pMedicamentos es Menor o igual a 2 Haga tal cosa y Luego le dies que si es Menor o igual a 0 Haga tal cosa (Siendo Que si es menor a 2 ya estara haciendo otra cosa)
PD: Espero que me hallas entendido :/
Respuesta: [Ayuda] Problema de codigo + Optimizacion -
Shura - 27.05.2014
C1ruj4n0 Claro que te entiendo pero hasta ahora no solucione mi problema, intente poniendo == 0 y que si es asн no lo tire y lo tira igual -.- ya no se qe hacer :/
Re: [Ayuda] Problema de codigo + Optimizacion -
juandiegox - 27.05.2014
Como un amigo dijo... La optimizacion es algo Relativo... Para que sea optimizado debes hacer un test , que no recuerdo cual era, pero optimizar no es poner el cуdigo mas corto... ni en la misma linea, a si que no te preocupes por "optimizar" pues optimizar es otra cosa..
Respuesta: [Ayuda] Problema de codigo + Optimizacion -
Shura - 27.05.2014
La optimizacion de un cуdigo es darle mejor uso y mas simple y que utilize menos llamados de variables o cosas a la hora de usar dicho comando, me diste una definiciуn no tan cierta de optimizacion y no me ayudaste con lo que pedн. -.-
Re: Respuesta: [Ayuda] Problema de codigo + Optimizacion -
juandiegox - 27.05.2014
Quote:
Originally Posted by Shura
La optimizacion de un cуdigo es darle mejor uso y mas simple y que utilize menos llamados de variables o cosas a la hora de usar dicho comando, me diste una definiciуn no tan cierta de optimizacion y no me ayudaste con lo que pedн. -.-
|
Claro... Pero estas refiriйndote a un "Codigo Optimizado", tal ves digas que no te estoy ayudando a nada.. pero por lo menos estas aprendiendo otra cosa... pues no es lo mismo Decir que es un codigo optimizado..
Edit: Ante el post...
pawn Код:
if(Info[playerid][pMedicamentos] <= 0) return SendClientMessageEx(playerid, COLOR_WHITE, "No puedes usar este comando si no tienes gramos de medicamentos"); //si es igual o menor que 0
else if(Info[playerid][pMedicamentos] >= 2) return SendClientMessageEx(playerid, COLOR_WHITE, "Debes tener 2 o mбs gramos de medicamentos para tirarlos al suelo"); //Estas Diciendo "Tener 2 o Mas" Osea Igual o mayor que. (>=)
else if(Info[playerid][pMedicamentos] < medicamentos) return SendClientMessage(playerid, -1, "No tienes esa cantidad de medicamentos para tirar al suelo");// Para que no puedan bugearlo, es decir que al tirar los gramos de medicamentos , solo tire lo que tiene en su personaje, a lo que me refiero es que si tiene 10 gramos, que pueda tirar hasta 10 gramos y no mбs, la variable "medicamentos" es la que uso para tirar al suelo.
intenta a si..
Respuesta: [Ayuda] Problema de codigo + Optimizacion -
Brasi - 27.05.2014
Envйz de if - else
Utiliza un switch y usalo con case.
Respuesta: [Ayuda] Problema de codigo + Optimizacion -
Diego316 - 27.05.2014
@Brasi , їPor quй deberнa usar la estructura switch? Y їPor quй dicen que usar if no es recomendable?.
Respuesta: [Ayuda] Problema de codigo + Optimizacion -
Tirael - 27.05.2014
Se supone que los if van buscando entre todos los if hasta encontrar el que tu definas.
Prueba asн:
pawn Код:
if(Info[playerid][pMedicamentos] <= 2) return SendClientMessageEx(playerid, COLOR_WHITE, "Debes tener 2 o mбs gramos de medicamentos para tirarlos al suelo");
if(Info[playerid][pMedicamentos] < medicamentos) return SendClientMessage(playerid, -1, "No tienes esa cantidad de medicamentos para tirar al suelo");