Elkészítési idő: Nem tudom
Miért is csináltam meg ezt a scriptet? Mivel láttam sokan keresik és volt is nem egy kérdés iránta.Nos akkor ebben a kis mondatban elmondanám mit is kell tudni erről a scriptről!
Ezzel a scriptel külön-külön tudod fixelni a járművet, külön az ajtókat, és a lökhárítókat meg persze a lámpákat és a kerekeket!Pár kép róla:A kód részeire szedve/ egy kis magyarázat:
Akkor elsőnek kezdeném a definiálásokkal:
// Itt található a kódhoz szükséges definiálások
// DialogID
#define szereles 1
#define szereles_info_motor 2
#define szereles_csomi 3
#define szereles_bal 4
#define szereles_jobb 5
#define szereles_elso 6
#define szereles_hatso 7
#define kerek_jobb_el 9
#define kerek_bal_el 10
#define kerek_jobb_hat 11
#define kerek_bal_hat 12
#define lampa_bal 13
#define lampa_jobb 14
#define Msg SendClientMessage
#define fuggveny%0(%1) forward%0(%1); public%0(%1)
const Float:INF_FLOAT=Float:0x7F800000;
#define NINCS -1
#define MIN_VEHI_ID 400
Ez a kód a kocsi modeljéne a lekérésére szolgál:
new vehName[][] =
{
\"Landstalker\",\"Bravura\",\"Buffalo\",\"Linerunner\",\"Perennial\",\"Sentinel\",\"Dumper\",\"Firetruck\",\"Trashmaster\",
\"Stretch\",\"Manana\",\"Infernus\",\"Voodoo\",\"Pony\",\"Mule\",\"Cheetah\",\"Ambulance\",\"Leviathan\",\"Moonbeam\",
\"Esperanto\",\"Taxi\",\"Washington\",\"Bobcat\",\"Whoopee\",\"BFInjection\",\"Hunter\",\"Premier\",\"Enforcer\",
\"Securicar\",\"Banshee\",\"Predator\",\"Bus\",\"Rhino\",\"Barracks\",\"Hotknife\",\"Trailer\",\"Previon\",\"Coach\",
\"Cabbie\",\"Stallion\",\"Rumpo\",\"RCBandit\",\"Romero\",\"Packer\",\"Monster0\",\"Admiral\",\"Squalo\",\"Seasparrow\",
\"Pizzaboy\",\"Tram\",\"Trailer\",\"Turismo\",\"Speeder\",\"Reefer\",\"Tropic\",\"Flatbed\",\"Yankee\",\"Caddy\",\"Solair\",
\"Berkley\'sRCVan\",\"Skimmer\",\"PCJ600\",\"Faggio\",\"Freeway\",\"RCBaron\",\"RCRaider\",\"Glendale\",\"Oceanic\",
\"Sanchez\",\"Sparrow\",\"Patriot\",\"Quad\",\"Coastguard\",\"Dinghy\",\"Hermes\",\"Sabre\",\"Rustler\",\"ZR350\",\"Walton\",
\"Regina\",\"Comet\",\"BMX\",\"Burrito\",\"Camper\",\"Marquis\",\"Baggage\",\"Dozer\",\"Maverick\",\"NewsChopper\",\"Rancher\",
\"FBIRancher\",\"Virgo\",\"Greenwood\",\"Jetmax\",\"Hotring0\",\"Sandking\",\"BlistaCompact\",\"PoliceMaverick\",
\"Boxvillde\",\"Benson\",\"Mesa\",\"RCGoblin\",\"HotringA\",\"HotringB\",\"Bloodring\",\"Rancher\",
\"SuperGT\",\"Elegant\",\"Journey\",\"Bike\",\"Mountain\",\"Beagle\",\"Cropduster\",\"Stunt\",\"Tanker\",\"Roadtrain\",
\"Nebula\",\"Majestic\",\"Buccaneer\",\"Shamal\",\"Hydra\",\"FCR900\",\"NRG500\",\"HPV1000\",\"Cement\",\"TowTruck\",
\"Fortune\",\"Cadrona\",\"FBITruck\",\"Willard\",\"Forklift\",\"Tractor\",\"Combine\",\"Feltzer\",\"Remington\",\"Slamvan\",
\"Blade\",\"Freight\",\"Streak\",\"Dodgem\",\"Vincent\",\"Bullet\",\"Clover\",\"Sadler\",\"Firetruck\",\"Hustler\",\"Intruder\",
\"Primo\",\"Cargobob\",\"Tampa\",\"Sunrise\",\"Merit\",\"Utility\",\"Nevada\",\"Yosemite\",\"Windsor\",\"MonsterA\",\"MonsterB\",
\"Uranus\",\"Jester\",\"Sultan\",\"Stratium\",\"Elegy\",\"Raindance\",\"RCTiger\",\"Flash\",\"Tahoma\",\"Savanna\",\"Bandito\",
\"FreightFlat\",\"StreakCarriage\",\"Kart\",\"Mower\",\"Dune\",\"Sweeper\",\"Broadway\",\"Tornado\",\"AT400\",\"DFT30\",
\"Huntley\",\"Stafford\",\"BF400\",\"NewsVan\",\"Tug\",\"PetrolTrailer\",\"Emperor\",\"Wayfarer\",\"Euros\",\"Hotdog\",\"Club\",
\"FreightBox\",\"Trailer\",\"Andromada\",\"Dodo\",\"RCCam\",\"Launch\",\"LSPD\",\"SFPD\",\"SFPD\",
\"Ranger\",\"Picador\",\"SWAT\",\"Alpha\",\"Phoenix\",\"Glendale\",\"Sadler\",\"Luggage\",\"Luggage\",\"Stairs\",
\"Boxville\",\"Tiller\",\"UtilityTrailer\",\"Stratum\"
};
stock GetVehicleModelName(id, bool:carid = false)
{
new str[64];
if(!carid)
{
if(id >= 400)
id -= 400;
format(str, 64,\"%s\", vehName[id]);
}
else
format(str, 64, \"%s\", vehName[GetVehicleModel(id) - 400]);
return str;
}
Parancsokhoz szükséges:
stock strtok(const string[], &index)
{
new length = strlen(string);
while ((index < length) && (string[index] <= \' \'))
{
index++;
}
new offset = index;
new result[20];
while ((index < length) && (string[index] > \' \') && ((index - offset) < (sizeof(result) - 1)))
{
result[index - offset] = string[index];
index++;
}
result[index - offset] = EOS;
return result;
}
Ez a kód pedig majd, hogy van-e melletted jármű(persze nem minden ilyen kódot magamtól írtam, rp modból szedtem ki):
stock GetClosestVehicle(playerid, benneulcheck = true)
{
#define ALAPKOCSI 1
new kocsi = NINCS, kocsibaul;
if(IsPlayerInAnyVehicle(playerid)) kocsibaul = GetPlayerVehicleID(playerid);
if(benneulcheck && kocsibaul > 0) kocsi = kocsibaul;
if(kocsi != NINCS)
return kocsi;
if(IsPlayerConnected(playerid) && IsVehicleConnected(ALAPKOCSI))
{
new closestvehicle=ALAPKOCSI;
new Float:closestdist = 9999.0, Float:dist;
for(new vehicleid=ALAPKOCSI; vehicleid<MAX_VEHICLES; vehicleid++)
{
if(vehicleid == kocsibaul) continue;
dist = GetDistanceToVehicle(playerid,vehicleid);
if(dist < closestdist)
{
if(GetVehicleVirtualWorld(vehicleid) == GetPlayerVirtualWorld(playerid))
{
closestdist = dist;
closestvehicle = vehicleid;
}
}
}
return closestvehicle;
}
return NINCS;
}
fuggveny Float:GetDistanceBetweenPoints(Float:x1,Float:y1,Float:z1,Float:x2,Float:y2,Float:z2)
{
return floatadd(floatadd(floatsqroot(floatpower(floatsub(x1,x2),2)),floatsqroot(floatpower(floatsub(y1,y2),2))),floatsqroot(floatpower(floatsub(z1,z2),2)));
}
fuggveny Float:GetDistanceToPoint(playerid,Float:x1,Float:y1,Float:z1)
{
if (IsPlayerConnected(playerid))
{
new Float:x2,Float:y2,Float:z2;
GetPlayerPos(playerid,x2,y2,z2);
return GetDistanceBetweenPoints(x1,y1,z1,x2,y2,z2);
}
return INF_FLOAT;
}
fuggveny IsVehicleConnected(vehicleid)
{
new Float:x1,Float:y1,Float:z1;
GetVehiclePos(vehicleid,x1,y1,z1);
if(x1==0.0 && y1==0.0 && z1==0.0)
{
return 0;
}
return 1;
}
fuggveny Float:GetDistanceToVehicle(playerid,vehicleid)
{
if (IsPlayerConnected(playerid) && IsVehicleConnected(vehicleid))
{
new Float:x1,Float:y1,Float:z1;
GetVehiclePos(vehicleid,x1,y1,z1);
return GetDistanceToPoint(playerid,x1,y1,z1);
}
return INF_FLOAT;
}
Ez fogja előhozni a fő dialogot:
fuggveny ShowSzereloDialog(playerid)
{
new gItemList[512];
format(gItemList,sizeof(gItemList),
\"{FFFFFF}Panel\\nMotorháztető\\n{FFFFFF}Csomagtartó\\n{FF6347}----------------------------------------\\
\\nBal első ajtó{FFFFFF}\\nJobb első ajtón\\n{FF6347}----------------------------------------\\
\\nElsőlökhárító\\nHátsólökhárító\\n{FF6347}----------------------------------------{FFFFFF}\\
\\nJobb első kerék\\nBal első kerék\\n{FF6347}----------------------------------------\\
{FFFFFF}\\nJobb hátsó kerék\\nBal hátsó kerék\\n{FF6347}----------------------------------------\\
{FFFFFF}\\nJobb első lámpa\\nBal első lámpa\");
ShowPlayerDialog(playerid,szereles,DIALOG_STYLE_TABLIST_HEADERS,\"{FFFFFF}Szerelő-System v1.0\",gItemList,\"Kiválaszt\",\"Bezár\");
return 1;
}
Itt pedig egy hosszú kód a lekérdezésről, hogy sérült-e az alkatrész vagy sem:
fuggveny SzereloInfoBox(playerid,infoid)
{
new kocsi = GetClosestVehicle(playerid);
new panels, doors, lights, tires;
new karosodas[64], karosodas2[64], karosodas3[64], karosodas4[64], karosodas5[64], karosodas6[64];
GetVehicleDamageStatus(kocsi, panels, doors, lights, tires);
// Lámpák
new light3 = ( ( 1 << 1 ) & lights ) >> 1;
new light4 = ( ( 1 << 3 ) & lights ) >> 3;
// Kerekek
new tfl = 1 & tires;
new tfr = ( ( 1 << 1 ) & tires ) >> 1;
new trl = ( ( 1 << 2 ) & tires ) >> 2;
new trr = ( ( 1 << 3 ) & tires ) >> 3;
// Panalek(Lököhárítók, szélvédő stb)
new flp = 0xf & panels;
new frp = ( ( 0xf << 4 ) & panels ) >> 4;
new rlp = ( ( 0xf << 8 ) & panels ) >> 8;
new rrp = ( ( 0xf << 12 ) & panels ) >> 12;
new windshield = ( ( 0xf << 16 ) & panels ) >> 16;
new fb = ( ( 0xf << 20 ) & panels ) >> 20; // első
new rb = ( ( 0xf << 24 ) & panels ) >> 24; // hátsó
// Ajtók
new bonnet = 0xf & doors;
new boot = ( ( 0xf << 8 ) & doors ) >> 8;
new driver_door = ( ( 0xf << 16 ) & doors ) >> 16;
new passenger_door = ( ( 0xf << 24 ) & doors ) >> 24;
switch(infoid)
{
case 0:
{
if(doors == (4 | (boot << | (driver_door << 16) | (passenger_door << 24)))
format(karosodas,64,\"{FF6347}Cserélendő\");
else
format(karosodas,64,\"{1E90FF}Javítandó\");
if(doors == (0 | (boot << | (driver_door << 16) | (passenger_door << 24)))
format(karosodas,64,\"{61FF30}Sértetlen\");
new info[128];
format(info,128,\"{FFFFFF}Panel \\t\\t\\t\\t\\t\\t\\t{FFFFFF}Info\\nKocsi\\t{0B47F0}%s\\nMotorháztető\\t%s\\nSzerelés\", GetVehicleModelName(kocsi, true), karosodas);
ShowPlayerDialog(playerid, szereles_info_motor, DIALOG_STYLE_TABLIST_HEADERS,\"{FFFFFF}Szerelő-System v1.0\",info,\"Szerel\",\"Vissza\");
}
case 1:
{
if(doors == (bonnet | (4 << | (driver_door << 16) | (passenger_door << 24)))
format(karosodas2,64,\"{FF6347}Cserélendő\");
else
format(karosodas2,64,\"{1E90FF}Javítandó\");
if(doors == (bonnet | (0 << | (driver_door << 16) | (passenger_door << 24)))
format(karosodas2,64,\"{61FF30}Sértetlen\");
new info[128];
format(info,128,\"{FFFFFF}Panel \\t\\t\\t\\t\\t\\t\\t{FFFFFF}Info\\nKocsi\\t{0B47F0}%s\\nCsomagtartó\\t%s\\nSzerelés\", GetVehicleModelName(kocsi, true), karosodas2);
ShowPlayerDialog(playerid, szereles_csomi, DIALOG_STYLE_TABLIST_HEADERS,\"{FFFFFF}Szerelő-System v1.0\",info,\"Szerel\",\"Vissza\");
}
case 3:
{
if(doors == (bonnet | (boot << | (4 << 16) | (passenger_door << 24)))
format(karosodas3,64,\"{FF6347}Cserélendő\");
else
format(karosodas3,64,\"{1E90FF}Javítandó\");
if(doors == (bonnet | (boot << | (0 << 16) | (passenger_door << 24)))
format(karosodas3,64,\"{61FF30}Sértetlen\");
new info[128];
format(info,128,\"{FFFFFF}Panel \\t\\t\\t\\t\\t\\t\\t{FFFFFF}Info\\nKocsi\\t{0B47F0}%s\\nBal első ajtó\\t%s\\nSzerelés\", GetVehicleModelName(kocsi, true), karosodas3);
ShowPlayerDialog(playerid, szereles_bal, DIALOG_STYLE_TABLIST_HEADERS,\"{FFFFFF}Szerelő-System v1.0\",info,\"Szerel\",\"Vissza\");
}
case 4:
{
if(doors == (bonnet | (boot << | (driver_door << 16) | (4 << 24)))
format(karosodas4,64,\"{FF6347}Cserélendő\");
else
format(karosodas4,64,\"{1E90FF}Javítandó\");
if(doors == (bonnet | (boot << | (driver_door << 16) | (0 << 24)))
format(karosodas4,64,\"{61FF30}Sértetlen\");
new info[128];
format(info,128,\"{FFFFFF}Panel \\t\\t\\t\\t\\t\\t\\t{FFFFFF}Info\\nKocsi\\t{0B47F0}%s\\nJobb első ajtó\\t%s\\nSzerelés\", GetVehicleModelName(kocsi, true), karosodas4);
ShowPlayerDialog(playerid, szereles_jobb, DIALOG_STYLE_TABLIST_HEADERS,\"{FFFFFF}Szerelő-System v1.0\",info,\"Szerel\",\"Vissza\");
}
case 6:
{
if(panels == (flp | (frp << 4) | (rlp << | (rrp << 12) | (windshield << 16) | (3 << 20) | (rb << 24)))
format(karosodas5, 64, \"{FF6347}Cserélendő\");
else
format(karosodas5, 64, \"{1E90FF}Javítandó\");
if(panels == (flp | (frp << 4) | (rlp << | (rrp << 12) | (windshield << 16) | (0 << 20) | (rb << 24)))
format(karosodas5, 64, \"{61FF30}Sértetlen\");
new info[128];
format(info,128,\"{FFFFFF}Panel \\t\\t\\t\\t\\t\\t\\t{FFFFFF}Info\\nKocsi\\t{0B47F0}%s\\nElsőlökhárító\\t%s\\nSzerelés\", GetVehicleModelName(kocsi, true), karosodas5);
ShowPlayerDialog(playerid, szereles_elso, DIALOG_STYLE_TABLIST_HEADERS,\"{0B47F0}SoulRPG {FFFFFF}Szerelő-System v1.0\",info,\"Szerel\",\"Vissza\");
}
case 7:
{
if(panels == (flp | (frp << 4) | (rlp << | (rrp << 12) | (windshield << 16) | (fb << 20) | (4 << 24)))
format(karosodas6, 64, \"{FF6347}Cserélendő\");
else
format(karosodas6, 64, \"{1E90FF}Javítandó\");
if(panels == (flp | (frp << 4) | (rlp << | (rrp << 12) | (windshield << 16) | (fb << 20) | (0 << 24)))
format(karosodas6, 64, \"{61FF30}Sértetlen\");
new info[128];
format(info,128,\"{FFFFFF}Panel \\t\\t\\t\\t\\t\\t\\t{FFFFFF}Info\\nKocsi\\t{0B47F0}%s\\nHátsólökhárító\\t%s\\nSzerelés\", GetVehicleModelName(kocsi, true), karosodas6);
ShowPlayerDialog(playerid, szereles_hatso, DIALOG_STYLE_TABLIST_HEADERS,\"{0B47F0}SoulRPG {FFFFFF}Szerelő-System v1.0\",info,\"Szerel\",\"Vissza\");
}
case 9:
{
new inform[12];
if(tires == (tfl | (tfr << 1) | (trl << 2) | (0 << 3)))
format(inform, 128, \"{61FF30}Sértetlen\");
if(tires == (tfl | (tfr << 1) | (trl << 2) | (1 << 3)))
format(inform, 128, \"{FF6347}Lyukas\");
new info[128];
format(info,128,\"{FFFFFF}Panel \\t\\t\\t\\t\\t\\t\\t{FFFFFF}Info\\nKocsi\\t{0B47F0}%s\\nJobbe első Kerék\\t%s\\nSzerelés\", GetVehicleModelName(kocsi, true), inform);
ShowPlayerDialog(playerid, kerek_jobb_el, DIALOG_STYLE_TABLIST_HEADERS,\"{0B47F0}SoulRPG {FFFFFF}Szerelő-System v1.0\",info,\"Szerel\",\"Vissza\");
}
case 10:
{
new inform[12];
if(tires == (tfl| (0 << 0) | (trl << 2) | (trr << 3)))
format(inform, 128, \"{61FF30}Sértetlen\");
if(tires == (tfl | (1 << 1) | (trl << 2) | (trr << 3)))
format(inform, 128, \"{FF6347}Lyukas\");
new info[128];
format(info,128,\"{FFFFFF}Panel \\t\\t\\t\\t\\t\\t\\t{FFFFFF}Info\\nKocsi\\t{0B47F0}%s\\nBal első Kerék\\t%s\\nSzerelés\", GetVehicleModelName(kocsi, true), inform);
ShowPlayerDialog(playerid, kerek_bal_el, DIALOG_STYLE_TABLIST_HEADERS,\"{0B47F0}SoulRPG {FFFFFF}Szerelő-System v1.0\",info,\"Szerel\",\"Vissza\");
}
case 12:
{
new inform[12];
if(tires == (0| (tfr << 1) | (trl << 2) | (trr << 3)))
format(inform, 128, \"{61FF30}Sértetlen\");
if(tires == (1 | (tfr << 1) | (trl << 2) | (trr << 3)))
format(inform, 128, \"{FF6347}Lyukas\");
new info[128];
format(info,128,\"{FFFFFF}Panel \\t\\t\\t\\t\\t\\t\\t{FFFFFF}Info\\nKocsi\\t{0B47F0}%s\\nJobb hátsó Kerék\\t%s\\nSzerelés\", GetVehicleModelName(kocsi, true), inform);
ShowPlayerDialog(playerid, kerek_jobb_hat, DIALOG_STYLE_TABLIST_HEADERS,\"{0B47F0}SoulRPG {FFFFFF}Szerelő-System v1.0\",info,\"Szerel\",\"Vissza\");
}
case 13:
{
new inform[12];
if(tires == (tfl| (tfr << 1) | (0 << 2) | (trr << 3)))
format(inform, 128, \"{61FF30}Sértetlen\");
if(tires == (tfl | (tfr << 1) | (1 << 2) | (trr << 3)))
format(inform, 128, \"{FF6347}Lyukas\");
new info[128];
format(info,128,\"{FFFFFF}Panel \\t\\t\\t\\t\\t\\t\\t{FFFFFF}Info\\nKocsi\\t{0B47F0}%s\\nbal hátsó Kerék\\t%s\\nSzerelés\", GetVehicleModelName(kocsi, true), inform);
ShowPlayerDialog(playerid, kerek_bal_hat, DIALOG_STYLE_TABLIST_HEADERS,\"{0B47F0}SoulRPG {FFFFFF}Szerelő-System v1.0\",info,\"Szerel\",\"Vissza\");
}
case 15:
{
new inform[128];
if(lights == ((light3 << 1) | (0 << 3)))
format(inform, 128, \"{61FF30}Sértetlen\");
if(lights == ((light3 << 1) | (1 << 3)))
format(inform, 128, \"{FF6347}Törött\");
new info[128];
format(info,128,\"{FFFFFF}Panel \\t\\t\\t\\t\\t\\t\\t{FFFFFF}Info\\nKocsi\\t{0B47F0}%s\\nJobb első lámpa\\t%s\\nSzerelés\", GetVehicleModelName(kocsi, true), inform);
ShowPlayerDialog(playerid, lampa_jobb, DIALOG_STYLE_TABLIST_HEADERS,\"{0B47F0}SoulRPG {FFFFFF}Szerelő-System v1.0\",info,\"Szerel\",\"Vissza\");
}
case 16:
{
new inform[128];
if(lights == ((0 << 1) | (light4 << 3)))
format(inform, 128, \"{61FF30}Sértetlen\");
if(lights == ((1 << 1) | (light4 << 3)))
format(inform, 128, \"{FF6347}Törött\");
new info[128];
format(info,128,\"{FFFFFF}Panel \\t\\t\\t\\t\\t\\t\\t{FFFFFF}Info\\nKocsi\\t{0B47F0}%s\\nBal első lámpa\\t%s\\nSzerelés\", GetVehicleModelName(kocsi, true), inform);
ShowPlayerDialog(playerid, lampa_bal, DIALOG_STYLE_TABLIST_HEADERS,\"{0B47F0}SoulRPG {FFFFFF}Szerelő-System v1.0\",info,\"Szerel\",\"Vissza\");
}
}
return 1;
}
A szövegből mindenki kitalálja melyik mit jelent és persze elő is hoz egy infó dialogot amiben lehet javítani az alkatrészt!!
Meg persze azért nem sorba vannak a számok mivel oda lettek közé téve kötőjelek!!!A parancs:
public OnPlayerCommandText(playerid, cmdtext[])
{
new cmd[256];
new idx = 0;
cmd = strtok(cmdtext, idx);
if(strcmp(cmd, \"/dialog\", true) == 0)
{
new kocsi = GetClosestVehicle(playerid);
if(GetDistanceToVehicle(playerid, kocsi) > 5.0)
return Msg(playerid, -1,\"Nincs melletted jármű!\");
ShowSzereloDialog(playerid);
return 1;
}
return 0;
}
Itt a végén pedig a leghosszabb kód ami a lényeg:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == szereles)
{
if(response)
{
switch(listitem)
{
case 0: SzereloInfoBox(playerid, 0);
case 1: SzereloInfoBox(playerid, 1);
case 2: ShowSzereloDialog(playerid);// --
case 3: SzereloInfoBox(playerid, 3);
case 4: SzereloInfoBox(playerid, 4);
case 5: ShowSzereloDialog(playerid);// --
case 6: SzereloInfoBox(playerid, 6);
case 7: SzereloInfoBox(playerid, 7);
case 8: ShowSzereloDialog(playerid); // --
case 9: SzereloInfoBox(playerid, 9);
case 10: SzereloInfoBox(playerid, 10);
case 11: ShowSzereloDialog(playerid); // --
case 12: SzereloInfoBox(playerid, 12);
case 13: SzereloInfoBox(playerid, 13);
case 14: ShowSzereloDialog(playerid);// --
case 15: SzereloInfoBox(playerid, 15);
case 16: SzereloInfoBox(playerid, 16);
}
}
}
if(dialogid == szereles_info_motor)
{
if(response)
{
if(listitem == 0)
SzereloInfoBox(playerid, 0);
if(listitem == 1)
SzereloInfoBox(playerid, 0);
if(listitem == 2)
{
new kocsi = GetClosestVehicle(playerid);
if(GetDistanceToVehicle(playerid, kocsi) > 3.0) return Msg(playerid, -1, \"Nincs melletted jármű!\");
new panels, doors, lights, tires;
GetVehicleDamageStatus(kocsi, panels, doors, lights, tires);
// Ajtók
//new bonnet = 0xf &doors;
new boot = ( ( 0xf << 8 ) & doors ) >> 8;
new driver_door = ( ( 0xf << 16 ) & doors ) >> 16;
new passenger_door = ( ( 0xf << 24 ) & doors ) >> 24;
RepairVehicle(kocsi);
doors = (0 | (boot << | (driver_door << 16) | (passenger_door << 24));
//doors = (bonnet);
UpdateVehicleDamageStatus(kocsi, panels, doors, lights, tires);
doors = (0 | (boot << | (driver_door << 16) | (passenger_door << 24));
UpdateVehicleDamageStatus(kocsi, panels, doors, lights, tires);
Msg(playerid,-1,\"Sikeresen megjavítottad a motorháztetőt!\");
ShowSzereloDialog(playerid);
}
}
else ShowSzereloDialog(playerid);
}
if(dialogid == szereles_csomi)
{
if(response)
{
if(listitem == 0)
SzereloInfoBox(playerid, 1);
if(listitem == 1)
SzereloInfoBox(playerid, 1);
if(listitem == 2)
{
new kocsi = GetClosestVehicle(playerid);
if(GetDistanceToVehicle(playerid, kocsi) > 3.0) return Msg(playerid, -1, \"Nincs melletted jármű!\");
new panels, doors, lights, tires;
GetVehicleDamageStatus(kocsi, panels, doors, lights, tires);
// Ajtók
new bonnet = 0xf &doors;
new boot = ( ( 0xf << 8 ) & doors ) >> 8;
new driver_door = ( ( 0xf << 16 ) & doors ) >> 16;
new passenger_door = ( ( 0xf << 24 ) & doors ) >> 24;
RepairVehicle(kocsi);
doors = (bonnet | (2 << | (driver_door << 16) | (passenger_door << 24));
doors = (boot >> 8 & 7);
UpdateVehicleDamageStatus(kocsi, panels, doors, lights, tires);
doors = (bonnet | (0 << | (driver_door << 16) | (passenger_door << 24));
UpdateVehicleDamageStatus(kocsi, panels, doors, lights, tires);
Msg(playerid,-1,\"Sikeresen megjavítottad a csomagtartót!\");
ShowSzereloDialog(playerid);
}
}
else ShowSzereloDialog(playerid);
}
if(dialogid == szereles_bal)
{
if(response)
{
if(listitem == 0)
SzereloInfoBox(playerid, 2);
if(listitem == 1)
SzereloInfoBox(playerid, 2);
if(listitem == 2)
{
new kocsi = GetClosestVehicle(playerid);
if(GetDistanceToVehicle(playerid, kocsi) > 3.0) return Msg(playerid, -1, \"Nincs melletted jármű!\");
new panels, doors, lights, tires;
GetVehicleDamageStatus(kocsi, panels, doors, lights, tires);
// Ajtók
new bonnet = 0xf &doors;
new boot = ( ( 0xf << 8 ) & doors ) >> 8;
new driver_door = ( ( 0xf << 16 ) & doors ) >> 16;
new passenger_door = ( ( 0xf << 24 ) & doors ) >> 24;
RepairVehicle(kocsi);
doors = (bonnet | (boot << | (2 << 16) | (passenger_door << 24));
doors = (driver_door >> 16 & 7);
UpdateVehicleDamageStatus(kocsi, panels, doors, lights, tires);
doors = (bonnet | (boot << | (0 << 16) | (passenger_door << 24));
UpdateVehicleDamageStatus(kocsi, panels, doors, lights, tires);
Msg(playerid,-1,\"Sikeresen megjavítottad a vezető felöli ajtót!\");
ShowSzereloDialog(playerid);
}
}
else ShowSzereloDialog(playerid);
}
if(dialogid == szereles_jobb)
{
if(response)
{
if(listitem == 0)
SzereloInfoBox(playerid, 3);
if(listitem == 1)
SzereloInfoBox(playerid, 3);
if(listitem == 2)
{
new kocsi = GetClosestVehicle(playerid);
if(GetDistanceToVehicle(playerid, kocsi) > 3.0) return Msg(playerid, -1, \"Nincs melletted jármű!\");
new panels, doors, lights, tires;
GetVehicleDamageStatus(kocsi, panels, doors, lights, tires);
// Ajtók
new bonnet = 0xf &doors;
new boot = ( ( 0xf << 8 ) & doors ) >> 8;
new driver_door = ( ( 0xf << 16 ) & doors ) >> 16;
new passenger_door = ( ( 0xf << 24 ) & doors ) >> 24;
RepairVehicle(kocsi);
doors = (bonnet | (boot << | (driver_door << 16) | (2 << 24));
doors = (passenger_door >> 24 & 7);
UpdateVehicleDamageStatus(kocsi, panels, doors, lights, tires);
doors = (bonnet | (boot << | (driver_door << 16) | (0 << 24));
UpdateVehicleDamageStatus(kocsi, panels, doors, lights, tires);
Msg(playerid,-1,\"Sikeresen megjavítottad az anyós felöli ajtót!\");
ShowSzereloDialog(playerid);
}
}
else ShowSzereloDialog(playerid);
}
if(dialogid == szereles_elso)
{
if(response)
{
if(listitem == 0)
SzereloInfoBox(playerid, 4);
if(listitem == 1)
SzereloInfoBox(playerid, 4);
if(listitem == 2)
{
new kocsi = GetClosestVehicle(playerid);
if(GetDistanceToVehicle(playerid, kocsi) > 3.0) return Msg(playerid, -1, \"Nincs melletted jármű!\");
new panels, doors, lights, tires;
GetVehicleDamageStatus(kocsi, panels, doors, lights, tires);
// Panelek
new flp = 0xf & panels;
new frp = ( ( 0xf << 4 ) & panels ) >> 4;
new rlp = ( ( 0xf << 8 ) & panels ) >> 8;
new rrp = ( ( 0xf << 12 ) & panels ) >> 12;
new windshield = ( ( 0xf << 16 ) & panels ) >> 16;
new fb = ( ( 0xf << 20 ) & panels ) >> 20; // Első
new rb = ( ( 0xf << 24 ) & panels ) >> 24; // Hátsó
RepairVehicle(kocsi);
panels = (flp | (frp << 4) | (rlp << | (rrp << 12) | (windshield << 16) | (1 << 20) | (rb << 24));
panels = (fb >> 20 & 15);
UpdateVehicleDamageStatus(kocsi, panels, doors, lights, tires);
panels = (flp | (frp << 4) | (rlp << | (rrp << 12) | (windshield << 16) | (0 << 20) | (rb << 24));
UpdateVehicleDamageStatus(kocsi, panels, doors, lights, tires);
Msg(playerid, -1, \"Sikeresen megjavítottad az elsőlökhárítót!\");
ShowSzereloDialog(playerid);
}
}
else ShowSzereloDialog(playerid);
}
if(dialogid == szereles_hatso)
{
if(response)
{
if(listitem == 0)
SzereloInfoBox(playerid, 5);
if(listitem == 1)
SzereloInfoBox(playerid, 5);
if(listitem == 2)
{
new kocsi = GetClosestVehicle(playerid);
if(GetDistanceToVehicle(playerid, kocsi) > 3.0) return Msg(playerid, -1, \"Nincs melletted jármű!\");
new panels, doors, lights, tires;
GetVehicleDamageStatus(kocsi, panels, doors, lights, tires);
// Panelek
new flp = 0xf & panels;
new frp = ( ( 0xf << 4 ) & panels ) >> 4;
new rlp = ( ( 0xf << 8 ) & panels ) >> 8;
new rrp = ( ( 0xf << 12 ) & panels ) >> 12;
new windshield = ( ( 0xf << 16 ) & panels ) >> 16;
new fb = ( ( 0xf << 20 ) & panels ) >> 20; // Első
new rb = ( ( 0xf << 24 ) & panels ) >> 24; // Hátsó
RepairVehicle(kocsi);
panels = (flp | (frp << 4) | (rlp << | (rrp << 12) | (windshield << 16) | (fb << 20) | (1 << 24));
panels = (rb >> 24 & 15);
UpdateVehicleDamageStatus(kocsi, panels, doors, lights, tires);
panels = (flp | (frp << 4) | (rlp << | (rrp << 12) | (windshield << 16) | (fb << 20) | (0 << 24));
UpdateVehicleDamageStatus(kocsi, panels, doors, lights, tires);
Msg(playerid, -1, \"Sikeresen megjavítottad a hátsólökhárítót!\");
ShowSzereloDialog(playerid);
}
}else ShowSzereloDialog(playerid);
}
if(dialogid == kerek_jobb_el)
{
if(response)
{
if(listitem == 0)
SzereloInfoBox(playerid, 6);
if(listitem == 1)
SzereloInfoBox(playerid, 6);
if(listitem == 2)
{
new kocsi = GetClosestVehicle(playerid);
if(GetDistanceToVehicle(playerid, kocsi) > 3.0) return Msg(playerid, -1, \"Nincs melletted jármű!\");
new panels, doors, lights, tires;
GetVehicleDamageStatus(kocsi, panels, doors, lights, tires);
new tfl = 1 & tires;
new tfr = ( ( 1 << 1 ) & tires ) >> 1;
new trl = ( ( 1 << 2 ) & tires ) >> 2;
// new trr = ( ( 1 << 3 ) & tires ) >> 3;
tires = (tfl | (tfr << 1) | (trl << 2) | (0 << 3));
UpdateVehicleDamageStatus(kocsi, panels, doors, lights, tires);
Msg(playerid, -1, \"Sikeresen megjavítottad a jobb első kereket!\");
ShowSzereloDialog(playerid);
}
}else ShowSzereloDialog(playerid);
}
if(dialogid == kerek_bal_el)
{
if(response)
{
if(listitem == 0)
SzereloInfoBox(playerid, 7);
if(listitem == 1)
SzereloInfoBox(playerid, 7);
if(listitem == 2)
{
new kocsi = GetClosestVehicle(playerid);
if(GetDistanceToVehicle(playerid, kocsi) > 3.0) return Msg(playerid, -1, \"Nincs melletted jármű!\");
new panels, doors, lights, tires;
GetVehicleDamageStatus(kocsi, panels, doors, lights, tires);
new tfl = 1 & tires;
//new tfr = ( ( 1 << 1 ) & tires ) >> 1;
new trl = ( ( 1 << 2 ) & tires ) >> 2;
new trr = ( ( 1 << 3 ) & tires ) >> 3;
tires = (tfl | (0 << 1) | (trl << 2) | (trr << 3));
UpdateVehicleDamageStatus(kocsi, panels, doors, lights, tires);
Msg(playerid, -1, \"Sikeresen megjavítottad a bal első kereket!\");
ShowSzereloDialog(playerid);
}
}else ShowSzereloDialog(playerid);
}
if(dialogid == kerek_jobb_hat)
{
if(response)
{
if(listitem == 0)
SzereloInfoBox(playerid, ;
if(listitem == 1)
SzereloInfoBox(playerid, ;
if(listitem == 2)
{
new kocsi = GetClosestVehicle(playerid);
if(GetDistanceToVehicle(playerid, kocsi) > 3.0) return Msg(playerid, -1, \"Nincs melletted jármű!\");
new panels, doors, lights, tires;
GetVehicleDamageStatus(kocsi, panels, doors, lights, tires);
// new tfl = 1 & tires;
new tfr = ( ( 1 << 1 ) & tires ) >> 1;
new trl = ( ( 1 << 2 ) & tires ) >> 2;
new trr = ( ( 1 << 3 ) & tires ) >> 3;
tires = (0 | (tfr << 1) | (trl << 2) | (trr << 3));
UpdateVehicleDamageStatus(kocsi, panels, doors, lights, tires);
Msg(playerid, -1, \"Sikeresen megjavítottad a jobb hátsó kereket!\");
ShowSzereloDialog(playerid);
}
}else ShowSzereloDialog(playerid);
}
if(dialogid == kerek_bal_hat)
{
if(response)
{
if(listitem == 0)
SzereloInfoBox(playerid, 9);
if(listitem == 1)
SzereloInfoBox(playerid, 9);
if(listitem == 2)
{
new kocsi = GetClosestVehicle(playerid);
if(GetDistanceToVehicle(playerid, kocsi) > 3.0) return Msg(playerid, -1, \"Nincs melletted jármű!\");
new panels, doors, lights, tires;
GetVehicleDamageStatus(kocsi, panels, doors, lights, tires);
new tfl = 1 & tires;
new tfr = ( ( 1 << 1 ) & tires ) >> 1;
//new trl = ( ( 1 << 2 ) & tires ) >> 2;
new trr = ( ( 1 << 3 ) & tires ) >> 3;
tires = (tfl | (tfr << 1) | (0 << 2) | (trr << 3));
UpdateVehicleDamageStatus(kocsi, panels, doors, lights, tires);
Msg(playerid, -1, \"Sikeresen megjavítottad a bal hátsó kereket!\");
ShowSzereloDialog(playerid);
}
}else ShowSzereloDialog(playerid);
}
if(dialogid == lampa_jobb)
{
if(response)
{
if(listitem == 0)
SzereloInfoBox(playerid, 10);
if(listitem == 1)
SzereloInfoBox(playerid, 10);
if(listitem == 2)
{
new kocsi = GetClosestVehicle(playerid);
if(GetDistanceToVehicle(playerid, kocsi) > 3.0) return Msg(playerid, -1, \"Nincs melletted jármű!\");
new panels, doors, lights, tires;
GetVehicleDamageStatus(kocsi, panels, doors, lights, tires);
new light3 = ( ( 1 << 1 ) & lights ) >> 1;
//new light4 = ( ( 1 << 3 ) & lights ) >> 3;
lights = ((light3 << 1) | (0 << 3));
UpdateVehicleDamageStatus(kocsi, panels, doors, lights, tires);
Msg(playerid, -1, \"Sikeresen megjavítottad a jobb első lámpát!\");
ShowSzereloDialog(playerid);
}
}else ShowSzereloDialog(playerid);
}
if(dialogid == lampa_bal)
{
if(response)
{
if(listitem == 0)
SzereloInfoBox(playerid, 11);
if(listitem == 1)
SzereloInfoBox(playerid, 11);
if(listitem == 2)
{
new kocsi = GetClosestVehicle(playerid);
if(GetDistanceToVehicle(playerid, kocsi) > 3.0) return Msg(playerid, -1, \"Nincs mellet5ted jármű!\");
new panels, doors, lights, tires;
GetVehicleDamageStatus(kocsi, panels, doors, lights, tires);
//new light3 = ( ( 1 << 1 ) & lights ) >> 1;
new light4 = ( ( 1 << 3 ) & lights ) >> 3;
lights = ((0 << 2) | (light4 << 3));
UpdateVehicleDamageStatus(kocsi, panels, doors, lights, tires);
Msg(playerid, -1, \"Sikeresen megjavítottad a bal első lámpát!\");
ShowSzereloDialog(playerid);
}
}else ShowSzereloDialog(playerid);
}
return 1;
}
Még annyit a script leírásáról hogy úgy oldottam meg, hogy rákattolsz pl a motorháztetőre akkor egy másik dialogot kiad az infórol ami a kocsi modeljét és a károsodását írja ki a végén pedig lehet szereltetni vele! A kódot felrakom Pastebinre is!! Esetleg ha kevésnek tartod a leírást akkor kommentben írd le mit hiányolsz és bővítem!! A Kódot nem fejlesztem! Csak javítom!! Persze a leírást még formálom! Ha felhasználod a Scriptet, akkor legyél szíves tüntesd fel a nevemet!!
« Utoljára szerkesztve: 2016. március 16. - 22:43:29 írta ǝuıןʎʞs »
Naplózva
« Válasz #1 Dátum: 2016. március 14. - 08:59:32 »
0
Ez szép munka!Mást nem nagyon tudok mondani, hisz annyira gyönyörű!
Naplózva
« Válasz #2 Dátum: 2016. március 14. - 09:06:45 »
0
Köszönöm szépen!! Próbált a legegyszerűbben kivitelezni a kódot
Esetleg ha valaki nem ért valamit írhat PM-et!!
Naplózva
« Válasz #3 Dátum: 2016. március 14. - 16:39:26 »
0
Szép munka...
Én szenvedtem vele 2 hónapot és erre te megcsinálod?
Ahh feleslegesnek érzem a munkámat... xĐ
Naplózva
« Válasz #4 Dátum: 2016. március 14. - 16:50:46 »
0
Szép munka, bár szerintem az átláthatóság, egyszerűség figyelembevétele miatt csinálhattál volna inkább új függvényeket a bitek számítására.
Naplózva
« Válasz #5 Dátum: 2016. március 14. - 16:52:47 »
0
Nekem is eltartott egy kis ideig rájonni, hogy hogyan is használjam, fárdtan éjszaka dobtam össze
Sokat kellett variálnom, hogy külön tegye fel a lököst meg az ajtót!!
De köszönöm szépen!!
Naplózva
« Válasz #6 Dátum: 2016. március 14. - 17:09:50 »
0
Aztaaa. Nagyon szép lett! Ment a \'+\'
:w00t:
Naplózva
« Válasz #7 Dátum: 2016. március 14. - 17:28:05 »
+1
Köszönöm mindenkinek!! Most egy összetetteb bankrablás-systemen gondolkodom
amit majd szintén szeretnék publikálni!!
Naplózva
« Válasz #8 Dátum: 2016. március 14. - 17:41:31 »
0
Várjuk
:laugh: :thumbsup:
Naplózva
ᗩωєѕσмє
« Válasz #9 Dátum: 2016. március 14. - 18:18:56 »
0
forward Float:GetDistanceToVehicle(playerid,vehicleid);
ezt elfelejtetted a kódod elejéről. Másrészt ha ez nincs ott, akkor warningolni is fog.
*észrevétel by Zyzu.
Naplózva
« Válasz #10 Dátum: 2016. március 14. - 18:25:49 »
0
jó buta a ZyZu akkor
nem kell.
Naplózva
« Válasz #11 Dátum: 2016. március 15. - 06:41:52 »
0
#define fuggveny%0(%1) forward%0(%1); public%0(%1)
Így oldottam meg és akkor nem kell írni forwardot
én lefuttattam és nincs semmi hiba
Naplózva
« Válasz #12 Dátum: 2016. március 15. - 09:14:39 »
0
Újonctól ilyet ritkán látni, bravó! Szép munka!
Naplózva
www.twitch.tv/almightymartinAz év STAFF tagja - 2015
Az év RP szervere - 2015 - [rc-rp.hu]
Red County Role Play [rc-rp.hu] - Tulajdonos
Project San Andreas [psa.hu] - Főadminisztrátor
See MTA LV [see-game.com] - Admin 4
« Válasz #13 Dátum: 2016. március 15. - 11:21:40 »
0
Köszönöm szépen!! :thumbsup:
Naplózva
« Válasz #14 Dátum: 2016. március 15. - 15:56:01 »
0
Szép munka
Naplózva