Tengo un almacйn de materiales casi terminado con un fallo
#1

Hola,

Llevo unas 2 horas intentando hacer un "simple" comando (para ustedes jaja) que meta los materiales que tenga un usuario a un almacйn y evidentemente йste que se le reste lo que se sumу al almacйn, parece fбcil sн... prбcticamente tengo el 90% hecho... aunque lo mбs seguro es que cuando os pase el cуdigo me dirбn, "Hay una manera mбs fбcil de hacer йsto..." pero bueno de momento es la ъnica porque todavнa soy principiante.

Vale, empezamos...

El comando:

Код:
CMD:meteraykz(playerid, params[]) 
{	
	if(isnull(params)) return SendClientMessage(playerid, 0xA00000FF, "* Debes poner la cantidad de materiales que quieres meter en el almacйn");
	if(DatosPJ[playerid][pMateriales] < 1) return SendClientMessage(playerid, 0xA00000FF, "* No tienes materiales para meter en el almacйn");
	if(!sscanf(params, "i", params[0]))
	DatosPJ[playerid][pMateriales] = params[0];
	AlmacenYKZ += DatosPJ[playerid][pMateriales];
	DatosPJ[playerid][pMateriales] -= params[0];
	return 1;
}
Perfecto, ahora bien, entro al servidor...

1. Me seteo 1 material a mi variable (pMateriales) por lo tanto pMateriales = 1
2. El almacйn estб en cero (AlmacenYKZ = 0) es decir estб vacнo (soy super listo)
3. Los return funcionan perfectamente, es decir si escribo solamente "/meteraykz" me tira el mensaje de que tienes que escribir una cantidad y si tengo menos de 1 material me tira otro mensaje que no tengo materiales.
4. Ahora lo que hago es usar el comando "/meteraykz 1" por lo tanto ahora "AlmacenYKZ = 1" y "pMateriales = 0" (estб comprobado por mн pues tengo hice dos comandos que me notifican cuбntos materiales hay en el almacйn y cuбntos tienes tъ)
5. Bien, ahora mismo el usuario tiene 0 materiales y el almacйn 1 material, perfecto.
6. Me seteo 2 materiales, es decir "pMateriales = 2" y el almacйn sigue igual "AlmacenYKZ = 1"
7. Vuelvo a usar el comando "/meteraykz 1" y si no me fallan mis matemбticas, deberнa de tener: "pMateriales = 1" y "AlmacenYKZ = 2".
8. Pues NO!, aunque no falla del todo... cuando compruebo los materiales del personaje en vez de tener 1 tengo 0 aunque lo bueno es que en el almacйn tengo 2 materiales en el almacйn, entonces no estб del todo mal para hacerlo yo solo jajaja.

їAlguna soluciуn?

Gracias, lo puse por puntos porque es algo tedioso.

Creo que el problema estб aquн:

Quote:

AlmacenYKZ += DatosPJ[playerid][pMateriales];

Estoy poniendo a "AlmacenYKZ" el valor de "AlmacenYKZ + pMateriales" pero he probado miles de opciones y estoy saturado...
Reply
#2

pawn Код:
CMD:meteraykz(playerid, params[])
{
    new cantidad;
    if(sscanf(params,"i",cantidad))
    if(DatosPJ[playerid][pMateriales] > cantidad) return SendClientMessage(playerid, 0xA00000FF, "* No tienes materiales para meter en el almacйn");
    {
        DatosPJ[playerid][pMateriales] -= cantidad;
        AlmacenYKZ += cantidad;
    } else SendClientMessage(playerid, 0xA00000FF, "* Debes poner la cantidad de materiales que quieres meter en el almacйn");
    return 1;
}

Quote:
Originally Posted by Orei
Посмотреть сообщение
Estoy poniendo a "AlmacenYKZ" el valor de "AlmacenYKZ + pMateriales" pero he probado miles de opciones y estoy saturado...
Lo que estas haciendo es sumarle el valor de pMateriales a AlmacenYKZ
Reply
#3

Muchas gracias Alexander, solucionado.

Si no te importa lo harй de tu forma pero con mi estilo xD:

Код:
CMD:ykzmeter(playerid, params[]) 
{	
	if(isnull(params)) return SendClientMessage(playerid, -1, "USO: /ykzmeter [materiales]");
	if(DatosPJ[playerid][pMateriales] < 1) return SendClientMessage(playerid, 0xA00000FF, "* No tienes materiales para meter en el almacйn");
	if(!sscanf(params, "i", params[0]))
	if(DatosPJ[playerid][pMateriales] < params[0]) return SendClientMessage(playerid, 0xA00000FF, "* No tienes tantos materiales para meter en el almacйn");
	DatosPJ[playerid][pMateriales] -= params[0];
	AlmacenYKZ += params[0];
	return 1;
}
Evidentemente tu forma es mбs ordenada y se entiende mejor pero me acostumbrй a ponerlo asн...

No se de dуnde saquй DatosPJ[playerid][pMateriales] = params[0]; y AlmacenYKZ += DatosPJ[playerid][pMateriales]; si era simplemente sumar y restar jajaja. Tengo que usar mбs la lуgica, ahora ya puedo hacer el comando para sacar los materiales. Gracias nuevamente
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)