SA-MP Forums Archive
Problem with encode/decode - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: SA-MP Scripting and Plugins (https://sampforum.blast.hk/forumdisplay.php?fid=8)
+--- Forum: Scripting Help (https://sampforum.blast.hk/forumdisplay.php?fid=12)
+--- Thread: Problem with encode/decode (/showthread.php?tid=424985)



Problem with encode/decode - KaSkA3eR - 24.03.2013

Hello,

I'm making CarDamage include. This is his(sorry for English):
Код:
/*
 *  Wersja: VehicleDamageModule 0.5
 *  Credits: Filip 'KaSkA3eR' Czechowicz
 */
#define FULL 0
#define POPED 1
#define DAMAGED 1
#define SHAKED 2
#define REMOVED 3

#define F_L_TIRE 0
#define B_L_TIRE 1
#define F_R_TIRE 2
#define B_R_TIRE 3

#define F_L_LIGHT 0
#define B_L_LIGHT 1
#define F_R_LIGHT 2
#define B_R_LIGHT 3

#define FRONT_PANEL 6
#define BACK_PANEL 7

getPanel(vehid, panelid)
{
    new panels,doors,lights,tires,p1,p2,ret;
    GetVehicleDamageStatus(vehid, panels, doors, lights, tires);
	decode_panels(panels, p1, p2);
	switch(panelid)
	{
	    case FRONT_PANEL:
	    {
 			ret = p1;
	    }
	    case BACK_PANEL:
	    {
 			ret = p2;
	    }
	}
	return ret;
}

setPanel(vehid, panelid, status)
{
    new panels,doors,lights,tires,p1,p2;
	GetVehicleDamageStatus(vehid, panels, doors, lights, tires);
	decode_panels(panels, p1, p2);
	switch(panelid)
	{
	    case FRONT_PANEL:
	    {
 			panels = encode_panels(0, 0, 0, 0, 0, status, p2);
	    }
	    case BACK_PANEL:
	    {
 			panels = encode_panels(0, 0, 0, 0, 0, p1, status);
	    }
	}
	UpdateVehicleDamageStatus(vehid, panels, doors, lights, tires);
	return 1;
}

getLight(vehid, lightid)
{
    new panels,doors,lights,tires,l1,l2,l3,l4,ret;
    GetVehicleDamageStatus(vehid, panels, doors, lights, tires);
	decode_lights(lights, l1, l2, l3, l4);
	switch(lightid)
	{
	    case F_L_LIGHT:
	    {
 			ret = l1;
	    }
	    case B_L_LIGHT:
	    {
 			ret = l2;
	    }
	    case F_R_LIGHT:
	    {
 			ret = l3;
	    }
	    case B_R_LIGHT:
	    {
 			ret = l4;
	    }
	}
	return ret;
}

setLight(vehid, lightid, status)
{
    new panels,doors,lights,tires,l1,l2,l3,l4;
	GetVehicleDamageStatus(vehid, panels, doors, lights, tires);
	decode_lights(lights, l1, l2, l3, l4);
	switch(lightid)
	{
	    case F_L_LIGHT:
	    {
 			lights = encode_lights(status, l2, l3, l4);
	    }
	    case B_L_LIGHT:
	    {
 			lights = encode_lights(l1, status, l3, l4);
 			break;
	    }
	    case F_R_LIGHT:
	    {
 			lights = encode_lights(l1, l2, status, l4);
	    }
	    case B_R_LIGHT:
	    {
 			lights = encode_lights(l1, l2, l3, status);
	    }
	}
	UpdateVehicleDamageStatus(vehid, panels, doors, lights, tires);
	return 1;
}

getTire(vehid, tireid)
{
    new panels,doors,lights,tires,t1,t2,t3,t4,ret;//121 line
    GetVehicleDamageStatus(vehid, panels, doors, lights, tires);
	decode_tires(tires, t1, t2, t3, t4);//123
	switch(tireid)//124
	{//125
	    case F_L_TIRE:
	    {
 			ret = t1;
	    }
	    case B_L_TIRE:
	    {
 			ret = t2;
	    }
	    case F_R_TIRE:
	    {
 			ret = t3;
	    }
	    case B_R_TIRE:
	    {
 			ret = t4;
	    }
	}
	return ret;
}

setTire(vehid, tireid, stat)
{
	new panels,doors,lights,tires,t1,t2,t3,t4;
	GetVehicleDamageStatus(vehid, panels, doors, lights, tires);
	t1 = getTire(vehid, F_L_TIRE);
	t2 = getTire(vehid, B_L_TIRE);//151
	t3 = getTire(vehid, F_R_TIRE);
	t4 = getTire(vehid, B_R_TIRE);//153
	switch(tireid)//154
	{//155
	    case F_L_TIRE:
	    {
 			UpdateVehicleDamageStatus(vehid, panels, doors, lights, encode_tires(stat, t2, t3, t4));
	    }
	    case B_L_TIRE:
	    {
 			UpdateVehicleDamageStatus(vehid, panels, doors, lights, encode_tires(t1, stat, t3, t4));
	    }
	    case F_R_TIRE:
	    {
 			UpdateVehicleDamageStatus(vehid, panels, doors, lights, encode_tires(t1, t2, stat, t4));
	    }
	    case B_R_TIRE:
	    {
 			UpdateVehicleDamageStatus(vehid, panels, doors, lights, encode_tires(t1, t2, t3, stat));
	    }
	}
	return 1;
}

decode_lights(lights, &light1, &light2, &light3, &light4)
{
    light1 = lights & 1;
    light2 = lights >> 1 & 1;
    light3 = lights >> 2 & 1;
    light4 = lights >> 3 & 1;
}

decode_panels(panels, &front_bumper, &rear_bumper)
{
    front_bumper= panels >> 20 & 15;
    rear_bumper = panels >> 24 & 15;
}

decode_doors(doors, &bonnet, &boot, &driver_door, &passenger_door)
{
    bonnet = doors & 7;
    boot = doors >> 8 & 7;
    driver_door = doors >> 16 & 7;
    passenger_door = doors >> 24 & 7;
}

decode_tires(tires, &tire1, &tire2, &tire3, &tire4)
{
    tire1 = tires & 1;
    tire2 = tires >> 1 & 1;
    tire3 = tires >> 2 & 1;
    tire4 = tires >> 3 & 1;
}

encode_tires(tire1, tire2, tire3, tire4)
{
	return tire1 | (tire2 << 1) | (tire3 << 2) | (tire4 << 3);
}

encode_panels(flp, frp, rlp, rrp, windshield, front_bumper, rear_bumper)
{
    return flp | (frp << 4) | (rlp << 8) | (rrp << 12) | (windshield << 16) | (front_bumper << 20) | (rear_bumper << 24);
}

encode_doors(bonnet, boot, driver_door, passenger_door, behind_driver_door, behind_passenger_door)
{
    #pragma unused behind_driver_door
    #pragma unused behind_passenger_door
    return bonnet | (boot << 8) | (driver_door << 16) | (passenger_door << 24);
}

encode_lights(light1, light2, light3, light4)
{
    return light1 | (light2 << 1) | (light3 << 2) | (light4 << 3);
}
I using it with this command:
Код:
CMD:tire(playerid, params[])
{
	new tid = strval(params);
	switch(tid)
	{
	    case 0:
	        setTire(GetPlayerVehicleID(playerid), 0, 1);
	    case 1:
	        setTire(GetPlayerVehicleID(playerid), 1, 1);
	    case 2:
	        setTire(GetPlayerVehicleID(playerid), 2, 1);
	    case 3:
	        setTire(GetPlayerVehicleID(playerid), 3, 1);
	}
	return 1;
}
I have this errors:
Код:
C:\Users\KaSkA3eR\Desktop\SAMP&PAWN\pawno\include\rp\cardmg.inc(121) : warning 219: local variable "t1" shadows a variable at a preceding level
C:\Users\KaSkA3eR\Desktop\SAMP&PAWN\pawno\include\rp\cardmg.inc(121) : warning 219: local variable "t2" shadows a variable at a preceding level
C:\Users\KaSkA3eR\Desktop\SAMP&PAWN\pawno\include\rp\cardmg.inc(121) : warning 219: local variable "t3" shadows a variable at a preceding level
C:\Users\KaSkA3eR\Desktop\SAMP&PAWN\pawno\include\rp\cardmg.inc(123) : error 022: must be lvalue (non-constant)
C:\Users\KaSkA3eR\Desktop\SAMP&PAWN\pawno\include\rp\cardmg.inc(124) : error 022: must be lvalue (non-constant)
C:\Users\KaSkA3eR\Desktop\SAMP&PAWN\pawno\include\rp\cardmg.inc(125) : error 022: must be lvalue (non-constant)
C:\Users\KaSkA3eR\Desktop\SAMP&PAWN\pawno\include\rp\cardmg.inc(121) : warning 203: symbol is never used: "t3"
C:\Users\KaSkA3eR\Desktop\SAMP&PAWN\pawno\include\rp\cardmg.inc(121) : warning 203: symbol is never used: "t2"
C:\Users\KaSkA3eR\Desktop\SAMP&PAWN\pawno\include\rp\cardmg.inc(121) : warning 203: symbol is never used: "t1"
C:\Users\KaSkA3eR\Desktop\SAMP&PAWN\pawno\include\rp\cardmg.inc(121 -- 151) : warning 219: local variable "t1" shadows a variable at a preceding level
C:\Users\KaSkA3eR\Desktop\SAMP&PAWN\pawno\include\rp\cardmg.inc(121 -- 151) : warning 219: local variable "t2" shadows a variable at a preceding level
C:\Users\KaSkA3eR\Desktop\SAMP&PAWN\pawno\include\rp\cardmg.inc(121 -- 151) : warning 219: local variable "t3" shadows a variable at a preceding level
C:\Users\KaSkA3eR\Desktop\SAMP&PAWN\pawno\include\rp\cardmg.inc(153) : error 022: must be lvalue (non-constant)
C:\Users\KaSkA3eR\Desktop\SAMP&PAWN\pawno\include\rp\cardmg.inc(154) : error 022: must be lvalue (non-constant)
C:\Users\KaSkA3eR\Desktop\SAMP&PAWN\pawno\include\rp\cardmg.inc(155) : error 022: must be lvalue (non-constant)
C:\Users\KaSkA3eR\Desktop\SAMP&PAWN\pawno\include\rp\cardmg.inc(151) : warning 203: symbol is never used: "t3"
C:\Users\KaSkA3eR\Desktop\SAMP&PAWN\pawno\include\rp\cardmg.inc(151) : warning 203: symbol is never used: "t2"
C:\Users\KaSkA3eR\Desktop\SAMP&PAWN\pawno\include\rp\cardmg.inc(151) : warning 203: symbol is never used: "t1"
Thanks in advance
Cheers,
KaSkA3eR