-
Sziasztok!
Neki álltam készíteni egy szerelő scriptet mely bit kódolásban nézi, hogy az adott elem törött-e vagy hiányzik.
De elakadtam...
Próbáltam a jobb hátsó kerékkel lásd:
new VehID = GetClosestCar(playerid);
GetVehiclePos(VehID, vX, vY, vZ);
new panels, doors, lights, tires;
GetVehicleDamageStatus(VehID, panels, doors, lights, tires);
encode_tires(tires1, tires2, tires3, tires4)
{
return tires1 | (tires2 << 1) | (tires3 << 2) | (tires4 << 3);
}
if(tire1 == 1) {
format(jobbHatso, sizeof(jobbHatso), \"{fffb00}Jobb Hátsó Kerék {FFFFFF}- {FF0000}Javítás Szükséges\\n\");
} else {
format(jobbHatso, sizeof(jobbHatso), \"{fffb00}Jobb Hátsó Kerék {FFFFFF}- {00ff00}Nem Szükséges Javítás\\n\");
}
De valamiért ezt adja be errornak:
(1579) : error 017: undefined symbol \"encode_tires\"
(1581) : error 017: undefined symbol \"tires1\"
(1584) : warning 225: unreachable code
(1584) : error 017: undefined symbol \"tire1\"
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
3 Errors.
Mi lehet a probléma?
-
new panels, doors, lights, tires;
csere:
new panels, doors, lights, tires, encode_tires;
Illetve van tire és tires ezek között mi a külömbség?
-
encode_tires(tires1, tires2, tires3, tires4)
{
return tires1 | (tires2 << 1) | (tires3 << 2) | (tires4 << 3);
}
ezt ne oda rakd be...
ez egy függvény és nem a callbacken/függvényen belül kell megadni...ott csak meghívni...
http://wiki.sa-mp.com/wiki/DamageStatus
-
Szóval, az encode részt külön rakjam mert az függvény?
Illetve hogy bírok akkor rá hivatkozni ha törött vagy nincs meg?
Nem nagyon értem..
-
igen külön rakd...kívülre...
encode-al 4 kerék állapotából csinálsz 1 számot...decode-al fordítva...
de az 1 számból is kinyerheted a 4 állapotot bit szinten ha értesz hozzá...
-
Oké, meghívom a kódon kívül az encode részt és így hivatkozok rá:
if(tires1 == 1) {
format(jobbHatso, sizeof(jobbHatso), \"{fffb00}Jobb Hátsó Kerék {FFFFFF}- {FF0000}Javítás Szükséges\\n\");
} else {
format(jobbHatso, sizeof(jobbHatso), \"{fffb00}Jobb Hátsó Kerék {FFFFFF}- {00ff00}Nem Szükséges Javítás\\n\");
}
Ha 1 akkor lyukas, ha 0 akkor nem..
De például majd karosszériánál, hogy bírom ellenőrizni, hogy megvan-e vagy annak mi lehet a száma?
De így sem bírok rá hivatkozni..
Egy példát nem bírsz nekem írni?
-
http://wiki.sa-mp.com/wiki/DamageStatus
itt vannak az encode és decode függvények is
http://wiki.sa-mp.com/wiki/DoorStates
lekéred a kocsi állapotát, aztán egyesével tovább darabolod a bit szintű adatokat...
de akár írhatsz rá egy függvényt ami teljes egészében szétdarabolja a bit szintű adatokat...
de arra inkább külön függvényeket ajánlok...
-
UGyan úgy, errort ír..
(1578) : error 017: undefined symbol \"tire1\"
(21254) : warning 203: symbol is never used: \"decode_tires\"
(21254) : warning 203: symbol is never used: \"encode_tires\"
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
1 Error.
Pedig beraktam a decode, és encode részt...
-
\" post=\"543848\" timestamp=\"1436265968\"]
UGyan úgy, errort ír..
(1578) : error 017: undefined symbol \"tire1\"
(21254) : warning 203: symbol is never used: \"decode_tires\"
(21254) : warning 203: symbol is never used: \"encode_tires\"
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
1 Error.
Pedig beraktam a decode, és encode részt...
[/quote]
most azt írja, hogy nem használod az encode-ot és a decode-ot...(valószínűleg jó helyre raktad)
és nem ismeri a tire1 nevű változót amire hivatkozol...
-
Szóval az elején hozzam létre?
new tire1, tire2, tire3, tire4, encode_tires, decode_tires, tires;
Vagy mit csináljak? :D
-
\" post=\"543854\" timestamp=\"1436273315\"]
Szóval az elején hozzam létre?
new tire1, tire2, tire3, tire4, encode_tires, decode_tires, tires;
Vagy mit csináljak? :D
[/quote]
new tire1, tire2, tire3, tire4;
decode_tires(tires, tire1, tire2, tire3, tire4);
-
Igen, meg csináltam..
Ugyan úgy be errorozik csak most más :S
(131) : warning 219: local variable \"tire1\" shadows a variable at a preceding level
(131) : warning 219: local variable \"tire2\" shadows a variable at a preceding level
(131) : warning 219: local variable \"tire3\" shadows a variable at a preceding level
(131) : warning 219: local variable \"tire4\" shadows a variable at a preceding level
(133) : warning 219: local variable \"tire1\" shadows a variable at a preceding level
(133) : warning 219: local variable \"tire2\" shadows a variable at a preceding level
(133) : warning 219: local variable \"tire3\" shadows a variable at a preceding level
(133) : warning 219: local variable \"tire4\" shadows a variable at a preceding level
(21250) : warning 203: symbol is never used: \"encode_tires\"
(21250) : warning 203: symbol is never used: \"tire2\"
(21250) : warning 203: symbol is never used: \"tire3\"
(21250) : warning 203: symbol is never used: \"tire4\"
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
12 Warnings.
-
és hol van még használva a tire1 változó?
-
132-es sor:
decode_tires(tires, tire1, tire2, tire3, tire4);
21251-es sor meg nem is létezik.. 21250 az utolsó..
-
(131) : warning 219: local variable \"tire1\" shadows a variable at a preceding level
(131) : warning 219: local variable \"tire2\" shadows a variable at a preceding level
(131) : warning 219: local variable \"tire3\" shadows a variable at a preceding level
(131) : warning 219: local variable \"tire4\" shadows a variable at a preceding level
(133) : warning 219: local variable \"tire1\" shadows a variable at a preceding level
(133) : warning 219: local variable \"tire2\" shadows a variable at a preceding level
(133) : warning 219: local variable \"tire3\" shadows a variable at a preceding level
(133) : warning 219: local variable \"tire4\" shadows a variable at a preceding level
több szinten van ugyanaz a változó...keress rá erre és azokat a sorokat másold be...vagy simán nevezd át ezeket valami másra...
-
Átnevezve is ugyan ez az error.
-
másold be most a kódot (ne csak 1 sort!)
és keress rá, hol van még \"tire1\" a kódban, azokat is másold be...
-
Sehol máshol a büdös életben nincs tire1.... csak ahol hivatkozok rá..
Illetve melyik részét a kódnak?
new tiree1, tiree2, tiree3, tiree4;
decode_tires(tires, tiree1, tiree2, tiree3, tire4e);
encode_tires(tiree1, tiree2, tiree3, tiree4)
{
return tiree1 | (tiree2 << 1) | (tiree3 << 2) | (tiree4 << 3);
}
new panels, doors, lights, tires;
GetVehicleDamageStatus(VehID, panels, doors, lights, tires);
if(tiree1 == 1) {
format(jobbHatso, sizeof(jobbHatso), \"Jobb Hátsó Kerék {FF0000}Javítás Szükséges {FFFFFF}550 Ft\\n\");
} else {
format(jobbHatso, sizeof(jobbHatso), \"Jobb Hátsó Kerék {00ff00}Nem Szükséges Javítás\\n\");
}
-
azt a részt ahol írja a hibát...
1578 körül, mert ott volt az üzenet...
-
Tessék az a sor és a körülötte lévő függvény
if(dialogid == SZERELO_DIALOG_MENU) {
if(!response) return 1;
new jobbHatso[126];
new Float: vX, Float: vY, Float: vZ;
new VehID = GetClosestCar(playerid);
GetVehiclePos(VehID, vX, vY, vZ);
new panels, doors, lights, tires;
GetVehicleDamageStatus(VehID, panels, doors, lights, tires);
if(tiree1 == 1) {
format(jobbHatso, sizeof(jobbHatso), \"Jobb Hátsó Kerék {FF0000}Javítás Szükséges {FFFFFF}550 Ft\\n\");
} else {
format(jobbHatso, sizeof(jobbHatso), \"Jobb Hátsó Kerék {00ff00}Nem Szükséges Javítás\\n\");
}
if(listitem == 0) { // kaszni
ShowPlayerDialog(playerid, SZERELO_DIALOG_KASZNI, DIALOG_STYLE_LIST, \"Karosszéria szerelés\", jobbHatso, \"Szerel\", \"Mégsem\");
}
if(listitem == 1) { // motor
}
}
Illetve a 21251-es sor nem létezik az a kód vége..
-
encode_tires függvényt vedd ki onnan !
-
[gmod]Bátran használjátok a \'Pawn\' tag-okat :)[/gmod]
-
Oké, most kivettem az encode részt és 6 errort kapok..
(132) : warning 219: local variable \"tiree1\" shadows a variable at a preceding level
(132) : warning 219: local variable \"tiree2\" shadows a variable at a preceding level
(132) : warning 219: local variable \"tiree3\" shadows a variable at a preceding level
(132) : warning 219: local variable \"tiree4\" shadows a variable at a preceding level
(21246) : warning 203: symbol is never used: \"tiree2\"
n(21246) : warning 203: symbol is never used: \"tiree3\"
(21246) : warning 203: symbol is never used: \"tiree4\"
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
6 Warnings.
132-es sor:
decode_tires(tires, tiree1, tiree2, tiree3, tiree4);
21246-es sor nem létezik.. 21245 az utolsó
-
#include <a_samp>
new val;
public OnFilterScriptInit()
{
new val;
new valx;
if(valx == 3)
{
new valx;
}
return 1;
}
C:\\Users\\kovacsr\\Downloads\\samp037_svr_R1_win32\\filterscripts\\del.pwn(7) : warning 219: local variable \"val\" shadows a variable at a preceding level
C:\\Users\\kovacsr\\Downloads\\samp037_svr_R1_win32\\filterscripts\\del.pwn(11) : warning 219: local variable \"valx\" shadows a variable at a preceding level
C:\\Users\\kovacsr\\Downloads\\samp037_svr_R1_win32\\filterscripts\\del.pwn(11) : warning 203: symbol is never used: \"valx\"
C:\\Users\\kovacsr\\Downloads\\samp037_svr_R1_win32\\filterscripts\\del.pwn(7) : warning 203: symbol is never used: \"val\"
C:\\Users\\kovacsr\\Downloads\\samp037_svr_R1_win32\\filterscripts\\del.pwn(7 -- 15) : warning 203: symbol is never used: \"val\"
Pawn compiler 3.2.3664 Copyright © 1997-2006, ITB CompuPhase
5 Warnings.
[/quote]
látod mire írja ki? ugyanaz a változó neve...
a \"never used\" azt jelenti, hogy soha nem használod, ezért írja az utolsó utáni sorra...
new tiree1, tiree2, tiree3, tiree4;
decode_tires(tires, tiree1, tiree2, tiree3, tire4e);
encode_tires(tiree1, tiree2, tiree3, tiree4)
{
return tiree1 | (tiree2 << 1) | (tiree3 << 2) | (tiree4 << 3);
}
itt ne legyen ugyanaz a változó...tehát a new után ne ugyanaz legyen mint a függvény deklarációnál...és különben sem ott kell lennie a változóknak ahol a deklarálás, ne globális változóban tárold ezt az adatot...
-
Meg van, már csak az a gond, hogy ha hivatkoznák a Tire1-re akkor azt írja, hogy nincs definiálva, ilyenkor mit tegyek?
-
másold be jelenleg, hogy néz ki a kód...
lehet egyszerűbb lett volna, ha teljes módot/scriptet másolsz :)
-
/* Encodes */
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);
}
//---------------
tires = encode_tires(0, 0, 0, 0); // fix all kerék
panels = encode_panels(0, 0, 0, 0, 0, 0, 0); // fix all panel
doors = encode_doors(0, 0, 0, 0, 0, 0); // fix all ajtó
lights = encode_lights(0, 0, 0, 0); // fix all lámpa
UpdateVehicleDamageStatus(VehID, panels, doors, lights, tires); // ezek a részek csak teszt ként vannak itt.
if(tire1 == 1) { //Ide írja, hogy a tire1 ismeretlen változó, nincs definiálva..
format(jobbHatso, sizeof(jobbHatso), \"Jobb Hátsó Kerék {FF0000}Javítás Szükséges {FFFFFF}550 Ft\\n\");
} else {
format(jobbHatso, sizeof(jobbHatso), \"Jobb Hátsó Kerék {00ff00}Nem Szükséges Javítás\\n\");
}
Hiba
(1603) : error 017: undefined symbol \"tire1\"
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
1 Error.
-
new panels, doors, lights, tires;
GetVehicleDamageStatus(VehID, panels, doors, lights, tires);
new tire[4];
decode_tires(tires,tire[0],tire[1],tire[2],tire[3]);
if(tire[0] == 1) {
//...
tessék ezt írd be...inkább tömbbe tárold szerintem ne tire1, tire2, tire3, tire4-el, de ha úgy akarod akkor írd át a tömb helyett arra...
-
(1598) : error 017: undefined symbol \"decode_tires\"
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
1 Error.
Mikor ezt bele rakom ezt az errort adja ki.
-
\" post=\"544067\" timestamp=\"1436444423\"]
(1598) : error 017: undefined symbol \"decode_tires\"
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
1 Error.
Mikor ezt bele rakom ezt az errort adja ki.
[/quote]
encode mellé a decode-okat is másold be a kódodba...mert mind2 kell...
-
Oda másoljam ahol a encode van?
Vagy ahol a tire[0] == 1-et ellenörzöm?
-
ahol az encode van, mármint a függvény létrehozást...
-
Oda raktam az encodek elé és akkor sem jó...
Mer kezdem elveszteni a bizalmam, hogy ez egyszer valaha működni fog-e
(133) : warning 219: local variable \"tiree\" shadows a variable at a preceding level
(133) : error 021: symbol already defined: \"tiree\"
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
1 Error.
132-es és 133-as sor:
new tiree[4];
decode_tires(tires,tiree[0],tiree[1],tiree[2],tiree[3]);
-
\" post=\"544121\" timestamp=\"1436467438\"]
Oda raktam az encodek elé és akkor sem jó...
Mer kezdem elveszteni a bizalmam, hogy ez egyszer valaha működni fog-e
(133) : warning 219: local variable \"tiree\" shadows a variable at a preceding level
(133) : error 021: symbol already defined: \"tiree\"
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
1 Error.
132-es és 133-as sor:
new tiree[4];
decode_tires(tires,tiree[0],tiree[1],tiree[2],tiree[3]);
[/quote]
szerintem nem jó helyre másoltad...
felül ahol a függvény deklarációk vannak oda kell, vagy inkább rakd külön include-ba...
-
Felülre raktam, ahol definiációk, new-ek és egyéb ilyen változók vannak.
-
másold be :)
-
Mit másoljak?
-
a felső és az alsó kódot is
-
Felső
/* Encodes */
new tiree[4];
decode_tires(tires,tiree[0],tiree[1],tiree[2],tiree[3]);
//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);
}
Alsó
if(dialogid == SZERELO_DIALOG_MENU) {
if(!response) return 1;
new jobbHatso[126];
new Float: vX, Float: vY, Float: vZ;
new VehID = GetClosestCar(playerid);
GetVehiclePos(VehID, vX, vY, vZ);
new panels, doors, lights, tires;
GetVehicleDamageStatus(VehID, panels, doors, lights, tires);
//tires = encode_tires(0, 0, 0, 0); // fix all tires
panels = encode_panels(0, 0, 0, 0, 0, 0, 0); // fix all panels
doors = encode_doors(0, 0, 0, 0, 0, 0); // fix all doors
lights = encode_lights(0, 0, 0, 0); // fix all lights
UpdateVehicleDamageStatus(VehID, panels, doors, lights, tires);
if(tires == 1) {
format(jobbHatso, sizeof(jobbHatso), \"Jobb Hátsó Kerék {FF0000}Javítás Szükséges {FFFFFF}550 Ft\\n\");
} else {
format(jobbHatso, sizeof(jobbHatso), \"Jobb Hátsó Kerék {00ff00}Nem Szükséges Javítás\\n\");
}
if(listitem == 0) { // kaszni
ShowPlayerDialog(playerid, SZERELO_DIALOG_KASZNI, DIALOG_STYLE_LIST, \"Karosszéria szerelés\", jobbHatso, \"Szerel\", \"Mégsem\");
}
if(listitem == 1) { // motor
}
}
-
new panels, doors, lights, tires;
GetVehicleDamageStatus(VehID, panels, doors, lights, tires);
new tire[4];
decode_tires(tires,tire[0],tire[1],tire[2],tire[3]);
if(tire[0] == 1) {
//...
tessék ezt írd be...inkább tömbbe tárold szerintem ne tire1, tire2, tire3, tire4-el, de ha úgy akarod akkor írd át a tömb helyett arra...
amit te felülre írtál azt lentre kellett volna!
és a függvényeket a linkelt weboldalról kell felülre!
tehát amit onnan bemásoltál encode kódok, mellé rakd be a decode-okat is...
panels = encode_panels(0, 0, 0, 0, 0, 0, 0); // fix all panels
doors = encode_doors(0, 0, 0, 0, 0, 0); // fix all doors
lights = encode_lights(0, 0, 0, 0); // fix all lights
Ezek feleslegesek simán írhatsz 0-t az encode-ok helyére ha minden 0...
-
ha több Stringem van és azt egy dialog listbe akarom rakni, hogy oldjam meg?
-
össze kell fűzni a stringeket...
de egyből létrehozhatsz egy nagy stringet amiben a dialog szövegét írod
-
Hogy bírom össze fűzni?
jobbHatso, jobbElso, balHatso, balElso
ezek vannak :Ö
-
másold be azt a részt ahol ezeket létrehozod
-
if(tiree[0] == 1) {
format(jobbHatso, sizeof(jobbHatso), \"Jobb Hátsó Kerék {FF0000}Javítás Szükséges {FFFFFF}650 Ft\\n\");
} else {
format(jobbHatso, sizeof(jobbHatso), \"Jobb Hátsó Kerék {00ff00}Nem Szükséges Javítás\\n\");
}
if(tiree[1] == 1) {
format(jobbElso, sizeof(jobbElso), \"Jobb Első Kerék {FF0000}Javítás Szükséges {FFFFFF}650 Ft\\n\");
} else {
format(jobbElso, sizeof(jobbElso), \"Jobb Első Kerék {00ff00}Nem Szükséges Javítás\\n\");
}
if(tiree[2] == 1) {
format(balHatso, sizeof(balHatso), \"Bal Hátsó Kerék {FF0000}Javítás Szükséges {FFFFFF}650 Ft\\n\");
} else {
format(balHatso, sizeof(balHatso), \"Bal Hátsó Kerék {00ff00}Nem Szükséges Javítás\\n\");
}
if(tiree[3] == 1) {
format(balElso, sizeof(balElso), \"Bal Első Kerék {FF0000}Javítás Szükséges {FFFFFF}650 Ft\\n\");
} else {
format(balElso, sizeof(balElso), \"Bal Első Kerék {00ff00}Nem Szükséges Javítás\\n\");
}
-
ne azt ahol értéket adsz vagy módosítod, hanem ahol létrehozod...
pl
new jobbHatso[32], jobbElso[32], balHatso[32], balElso[32];
vagy
new jobbHatso[32];
new jobbElso[32];
new balHatso[32];
new balElso[32];
-
new jobbHatso[126], jobbElso[126], balHatso[126], balElso[126];
-
felesleges a 126 cella
Jobb Hátsó Kerék {00ff00}Nem Szükséges Javítás\\n[/quote]
Ehhez szükséges 58 cella, szóval szerintem bőven elég annyi
Ha nagyon ragaszkodsz a 126-hoz akkor azt így kell:
new str[501]; // 4*126-3 szöveg végi \\0
format(str,sizeof(str),\"%s%s%s%s\",jobbHatso, jobbElso, balHatso, balElso);