SA-MP Forums Archive
problema restar variable - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Español/Spanish (https://sampforum.blast.hk/forumdisplay.php?fid=29)
+---- Thread: problema restar variable (/showthread.php?tid=592213)



problema restar variable - kn9w - 21.10.2015

bueno les comento quiero restar una variable al usar un comando..
al colocarlo asi me funciona..
Код:
Points[mypoint][Stock] -= amount;
pero al colocarlo
Код:
Points[mypoint][Stock] - amount;
me dice error: warning 215: expression has no effect

por que no funciona colocando menos solo queiro que reste nada mas.


Respuesta: problema restar variable - DesingMyCry - 21.10.2015

No estas guardando el resultado en alguna variable.


Respuesta: problema restar variable - Goncho28 - 21.10.2015

Porque el '=' lo que hace es setear la variable.


Respuesta: problema restar variable - kn9w - 21.10.2015

quiero que se le reste a Points[mypoint][Stock] lo que le pongo en amount
Код:
CMD:comprarhierba(playerid, params[])
{
	new string[128], amount;
	if(sscanf(params, "d", amount)) return SendClientMessageEx(playerid, COLOR_WHITE, "Utiliza: /comprarhierba (valor)");

	new tel;
	new price;
	new level = Info[playerid][pDrugsSkill];
	if(level >= 0 && level <= 50)
	{ tel = 100; if(amount < 1 || amount > 10) { SendClientMessageEx(playerid, COLOR_GREY, "{A2DC35}[INFO]:{FFFFFF} No puedes sacar mas de 10 con este nivel de skill!"); return 1; } }
	else if(level >= 51 && level <= 100)
	{ tel = 100; if(amount < 1 || amount > 20) { SendClientMessageEx(playerid, COLOR_GREY, "{A2DC35}[INFO]:{FFFFFF} No puedes sacar mas de 20 con este nivel de skill!"); return 1; } }
	else if(level >= 101 && level <= 200)
	{ tel = 100; if(amount < 1 || amount > 30) { SendClientMessageEx(playerid, COLOR_GREY, "{A2DC35}[INFO]:{FFFFFF} No puedes sacar mas de 30 con este nivel de skill!"); return 1; } }
	else if(level >= 201 && level <= 400)
	{ tel = 100; if(amount < 1 || amount > 40) { SendClientMessageEx(playerid, COLOR_GREY, "{A2DC35}[INFO]:{FFFFFF} No puedes sacar mas de 40 con este nivel de skill!"); return 1; } }
	else if(level >= 401)
	{ tel = 100; if(amount < 1 || amount > 50) { SendClientMessageEx(playerid, COLOR_GREY, "{A2DC35}[INFO]:{FFFFFF} No puedes sacar mas de 50 con este nivel de skill!"); return 1; } }
	new mypoint = -1;
	for (new i=0; i<MAX_POINTS; i++)
	{
		if (IsPlayerInRangeOfPoint(playerid, 3.0, Points[i][Pointx], Points[i][Pointy], Points[i][Pointz]) && Points[i][Type] == 3)
		{
			mypoint = i;
		}
	}
	if (mypoint == -1) return SendClientMessageEx(playerid, COLOR_WHITE, " No estбs en la casa de crack.");
	if ( Info[playerid][pPot] >= 25) return SendClientMessageEx(playerid, COLOR_WHITE, " Tu ya tienes 25 gramos de hierba, no puedes cargar mбs.");
	if (Info[playerid][pJob] == 5 || Info[playerid][pJob2] ==5)	{
		price = amount * tel;
		if(Points[mypoint][Stock] < amount && Info[playerid][pVIP] < 1) return SendClientMessageEx(playerid, COLOR_WHITE, "* Esta casa de drogas no tiene mбs hierba.");
		if(GetPlayerCash(playerid) > price)		{
			format(string, sizeof(string), "* Compraste %d gramos por $%d.", amount, price);
			SendClientMessageEx(playerid, COLOR_LIGHTBLUE, string);
			GivePlayerCash(playerid, -price);
            Points[mypoint][Stock] - amount; // en esta linea quiero que le reste a Points[mypoint][Stock] lo que puse en amount... para que se actualize la hierbadisponible.
			Info[playerid][pPot] += amount;
			if(Info[playerid][pVIP] < 1)			{
				Points[mypoint][Stock] -= amount;
				format(string, sizeof(string), " HIERBA DISPONIBLE: %d/1000.", Points[mypoint][Stock]);
				UpdateDynamic3DTextLabelText(Points[mypoint][TextLabel], COLOR_YELLOW, string);
			}
			for(new i = 0; i < sizeof(fINFO); i++)			{
				if(strcmp(Points[mypoint][Owner], fINFO[i][FamilyName], true) == 0){
					fINFO[i][FamilyBank] = fINFO[i][FamilyBank]+price/2;
				}
			}
		}
		else return SendClientMessageEx(playerid, COLOR_WHITE, "No puedes pagar estas drogas.");
	}
	else SendClientMessageEx(playerid, COLOR_WHITE, "No eres vendedor de drogas.");
	return 1;
}



Re: problema restar variable - Kevln - 22.10.2015

Lo que hace lo siguiente

pawn Код:
Points[mypoint][Stock] -= amount;
es restar el valor en "amount" al valor de "Points[mypoint][Stock]" y asignar ese valor al primer variable "Points[mypoint][Stock]".


Respecto a esto

pawn Код:
Points[mypoint][Stock] - amount;
la forma correcta de hacerlo, seria

pawn Код:
Points[mypoint][Stock] = Points[mypoint][Stock] - amount;

Ambos hacen lo mismo, pero utiliza el primero.