[Ayuda] Problema de codigo + Optimizacion
#1

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
Reply
#2

Postea el comando entero.
Reply
#3

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 :/
Reply
#4

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 :/
Reply
#5

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..
Reply
#6

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н. -.-
Reply
#7

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..
Reply
#8

Envйz de if - else
Utiliza un switch y usalo con case.
Reply
#9

@Brasi , їPor quй deberнa usar la estructura switch? Y їPor quй dicen que usar if no es recomendable?.
Reply
#10

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");
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)