Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <a_samp>
- #include <dini>
- #define MAX_PLAYERS_EX MAX_PLAYERS //kvôli sscanf
- #define MAX_PLAYER_CARS 3
- #define RED 0xFF0000FF
- #define ZLTA 0xFFFF00FF
- #define SCM SendClientMessage
- #define DIALOG_CARS_LIST 612
- #define DIALOG_CAR_MENU 613
- #define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1
- enum Player_Car_Info
- {
- Float:CposX,
- Float:CposY,
- Float:CposZ,
- Float:CposA,
- Color1,
- Color2,
- CarID,
- }
- new PlayerCar[MAX_PLAYERS][MAX_PLAYER_CARS][Player_Car_Info];
- stock BuyCarForPlayer(playerid,modelid,Float:spawnX,Float:spawnY,Float:spawnZ,Float:spawnA,CarCost)
- {
- if(GetPlayerMoney(playerid)<CarCost)return SCM(playerid,RED,"Nemáš dostatok peňazí !");
- new CarSlot = GetPlayerFreeSlot(playerid);
- if(CarSlot == -1)return SCM(playerid,RED,"Nemáš voľný slot pre nové auto !");
- GivePlayerMoney(playerid,-CarCost);
- PlayerCar[playerid][CarSlot][CarID]=CreateVehicle(modelid,spawnX,spawnY,spawnZ,spawnA,1,1,-1);
- PlayerCar[playerid][CarSlot][CposX]=spawnX;
- PlayerCar[playerid][CarSlot][CposY]=spawnY;
- PlayerCar[playerid][CarSlot][CposZ]=spawnZ;
- PlayerCar[playerid][CarSlot][CposA]=spawnA;
- PlayerCar[playerid][CarSlot][Color1]=1;
- PlayerCar[playerid][CarSlot][Color2]=1;
- new s[50];
- format(s,50,"PCars/%sCar%d.ini",PlayerName(playerid),CarSlot);
- dini_Create(s);
- dini_IntSet(s,"ModelID",modelid);
- dini_FloatSet(s,"SpawnX",spawnX);
- dini_FloatSet(s,"SpawnY",spawnY);
- dini_FloatSet(s,"SpawnZ",spawnZ);
- dini_FloatSet(s,"SpawnA",spawnA);
- dini_IntSet(s,"Color1",1);
- dini_IntSet(s,"Color2",1);
- dini_FloatSet(s,"Health",1000);
- dini_Set(s,"Damage","0 0 0");
- PutPlayerInVehicle(playerid,PlayerCar[playerid][CarSlot][CarID],0);
- SCM(playerid,ZLTA,"Kúpil si si nové vozidlo. Vozidlo si môžeš kdekoľvek zaparkovať pomocou /park.");
- return 1;
- }
- stock DeletePlayerCar(playerid,SlotID)
- {
- DestroyVehicle(PlayerCar[playerid][SlotID][CarID]);
- PlayerCar[playerid][SlotID][CarID]=-1;
- new s[50];
- format(s,50,"PCars/%sCar%d.ini",PlayerName(playerid),SlotID);
- dini_Remove(s);
- }
- stock RespawnPlayerCar(playerid,SlotID)
- {
- SetVehiclePos(PlayerCar[playerid][SlotID][CarID],
- PlayerCar[playerid][SlotID][CposX],
- PlayerCar[playerid][SlotID][CposY],
- PlayerCar[playerid][SlotID][CposZ]);
- SetVehicleZAngle(PlayerCar[playerid][SlotID][CarID],
- PlayerCar[playerid][SlotID][CposA]);
- }
- stock GetPlayerFreeSlot(playerid)
- {
- for(new i;i<MAX_PLAYER_CARS;i++)
- {
- if(PlayerCar[playerid][i][CarID]==-1)
- return i;
- }
- return -1;
- }
- stock PlayerName(i)
- {
- new n[MAX_PLAYER_NAME];
- GetPlayerName(i,n,MAX_PLAYER_NAME);
- return n;
- }
- forward PCar_PlayerConnect(playerid);
- forward PCar_PlayerDisconnect(playerid);
- forward PCar_DialogResponse(playerid,dialogid,response,listitem);
- forward PCar_VehicleDeath(vehicleid);
- public PCar_PlayerConnect(playerid)
- {
- new s[50],pname[MAX_PLAYER_NAME];
- GetPlayerName(playerid,pname,MAX_PLAYER_NAME);
- for(new i;i<MAX_PLAYER_CARS;i++)
- {
- format(s,50,"PCars/%sCar%d.ini",pname,i);
- if(fexist(s))
- {
- PlayerCar[playerid][i][CarID]=CreateVehicle(dini_Int(s,"ModelID"),dini_Float(s,"SpawnX"),dini_Float(s,"SpawnY")
- ,dini_Float(s,"SpawnZ"),dini_Float(s,"SpawnA"),dini_Int(s,"Color1"),dini_Int(s,"Color2"),-1);
- PlayerCar[playerid][i][CposX]=dini_Float(s,"SpawnX");
- PlayerCar[playerid][i][CposY]=dini_Float(s,"SpawnY");
- PlayerCar[playerid][i][CposZ]=dini_Float(s,"SpawnZ");
- PlayerCar[playerid][i][CposA]=dini_Float(s,"SpawnA");
- SetVehicleHealth(PlayerCar[playerid][i][CarID],dini_Float(s,"Health"));
- new a[4];
- if(!sscanf(dini_Get(s,"Damage"),"dddd",a[0],a[1],a[2],a[3]))
- UpdateVehicleDamageStatus(PlayerCar[playerid][i][CarID],a[0],a[1],a[2],a[3]);
- }
- else
- PlayerCar[playerid][i][CarID]=-1;
- }
- }
- public PCar_PlayerDisconnect(playerid)
- {
- new s[50],pname[MAX_PLAYER_NAME];
- GetPlayerName(playerid,pname,MAX_PLAYER_NAME);
- for(new i;i<MAX_PLAYER_CARS;i++)
- {
- format(s,50,"PCars/%sCar%d.ini",pname,i);
- if(fexist(s))
- {
- new Float:health;
- if(health > 300)
- {
- dini_FloatSet(s,"SpawnX",PlayerCar[playerid][i][CposX]);
- dini_FloatSet(s,"SpawnY",PlayerCar[playerid][i][CposY]);
- dini_FloatSet(s,"SpawnZ",PlayerCar[playerid][i][CposZ]);
- dini_FloatSet(s,"SpawnA",PlayerCar[playerid][i][CposA]);
- new a[4];
- GetVehicleDamageStatus(PlayerCar[playerid][i][CarID],a[0],a[1],a[2],a[3]);
- new str[35];
- format(str,sizeof(str),"%d %d %d %d",a[0],a[1],a[2],a[3]);
- dini_Set(s,"Damage",str);
- }
- else
- {
- dini_Remove(s);
- }
- DestroyVehicle(PlayerCar[playerid][i][CarID]);
- PlayerCar[playerid][i][CarID]=-1;
- }
- }
- }
- public PCar_DialogResponse(playerid,dialogid,response,listitem)
- {
- if(dialogid == DIALOG_CARS_LIST && response)
- {
- if(PlayerCar[playerid][listitem][CarID]==-1)return SCM(playerid,RED,"K tomuto slotu nemáš kúpené auto");
- SetPVarInt(playerid,"CarID",listitem);
- ShowPlayerDialog(playerid,DIALOG_CAR_MENU,DIALOG_STYLE_LIST,"Tvoje vozidlá:","Respawnúť\nPredať","OK","Cancel");
- }
- else if(dialogid == DIALOG_CAR_MENU && response)
- {
- new slot = GetPVarInt(playerid,"CarID");
- if(listitem == 0)//respawn
- {
- RespawnPlayerCar(playerid,slot);
- }
- else if(listitem == 1)//predať
- {
- DeletePlayerCar(playerid,slot);
- }
- }
- return 1;
- }
- public PCar_VehicleDeath(vehicleid)
- {
- new b;
- for(new i;i<MAX_PLAYERS;i++)
- {
- for(new c;c<MAX_PLAYER_CARS;c++)
- {
- if(vehicleid == PlayerCar[i][c][CarID])
- {
- DeletePlayerCar(i,c);
- SCM(i,RED,"Vaše vozidlo bolo zničené !");
- b=true;
- break;
- }
- }
- if(b)
- break;
- }
- }
- dcmd_park(playerid,params[])
- {
- #pragma unused params
- if(GetPlayerState(playerid)!=PLAYER_STATE_DRIVER)return SCM(playerid,RED,"Nesedíš vo vozidle !");
- new Vehicle=GetPlayerVehicleID(playerid);
- for(new i;i<MAX_PLAYER_CARS;i++)
- {
- if(Vehicle==PlayerCar[playerid][i][CarID])
- {
- new Float:pos[4];
- GetVehiclePos(Vehicle,pos[0],pos[1],pos[2]);
- GetVehicleZAngle(Vehicle,pos[3]);
- PlayerCar[playerid][i][CposX]=pos[0];
- PlayerCar[playerid][i][CposY]=pos[1];
- PlayerCar[playerid][i][CposZ]=pos[2];
- PlayerCar[playerid][i][CposA]=pos[3];
- SCM(playerid,ZLTA,"Tvoje vozidlo bolo odparkované na aktuálnom mieste.");
- break;
- }
- }
- return 1;
- }
- dcmd_vehicles(playerid,params[])
- {
- #pragma unused params
- new s[200];
- for(new i;i<MAX_PLAYER_CARS;i++)
- {
- if(PlayerCar[playerid][i][CarID]==-1)
- format(s,200,"%sPrázdny slot\n",s);
- else
- format(s,200,"%s%s\n",s,GetVehicleModelName(PlayerCar[playerid][i][CarID]));
- }
- ShowPlayerDialog(playerid,DIALOG_CARS_LIST,DIALOG_STYLE_LIST,"Tvoje vozidlá:",s,"Vybrať","Cancel");
- return 1;
- }
- forward PCar_OnPlayerCommandText(playerid, cmdtext[]);
- public PCar_OnPlayerCommandText(playerid, cmdtext[])
- {
- dcmd(park,4,cmdtext);
- dcmd(vehicles,8,cmdtext);
- return 0;
- }
- /*// NAZORNA UKAZKA OBCHODU A KUPOVANIA ..
- public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
- {
- PCar_DialogResponse(playerid,dialogid,response,listitem);
- if(dialogid == 123&&response)//pre testovanie
- {
- if(listitem == 0)
- {
- BuyCarForPlayer(playerid,411,4,4,3,0,100);
- }
- }
- return 1;
- }
- public OnPlayerConnect(playerid)
- {
- PCar_PlayerConnect(playerid);
- return 1;
- }
- public OnPlayerDisconnect(playerid, reason)
- {
- PCar_PlayerDisconnect(playerid);
- return 1;
- }
- public OnPlayerSpawn(playerid)//pre testovanie
- {
- SetPlayerPos(playerid,0,0,3);
- GivePlayerMoney(playerid,1000);
- return 1;
- }
- public OnVehicleDeath(vehicleid, killerid)
- {
- PCar_VehicleDeath(vehicleid);
- return 1;
- }
- public OnPlayerCommandText(playerid, cmdtext[])
- {
- PCar_OnPlayerCommandText(playerid, cmdtext[]);
- return 0;
- }
- public OnPlayerPickUpPickup(playerid, pickupid)//pre testovanie
- {
- if(IsPlayerInRangeOfPoint(playerid,2,2,2,3))
- {
- ShowPlayerDialog(playerid,123,DIALOG_STYLE_LIST,"Predajňa vozidiel","Infernus $100","Kúpiť","Cancel");
- }
- return 1;
- }
- public OnFilterScriptInit()
- {
- CreatePickup(1247,1,3,3,3,0);
- return 1;
- }*/
- stock GetVehicleModelName(v)
- {
- new s[35];
- switch(GetVehicleModel(v))
- {
- case 400:s="Landstalker";
- case 401:s="Bravura";
- case 402:s="Buffalo";
- case 403:s="Linerunner";
- case 404:s="Perenail";
- case 405:s="Sentinel";
- case 406:s="Dumper";
- case 407:s="Firetruck";
- case 408:s="Trashmaster";
- case 409:s="Stretch";
- case 410:s="Manana";
- case 411:s="Infernus";
- case 412:s="Voodoo";
- case 413:s="Pony";
- case 414:s="Mule";
- case 415:s="Cheetah";
- case 416:s="Ambulance";
- case 417:s="Levetian";
- case 418:s="Moonbeam";
- case 419:s="Esperanto";
- case 420:s="Taxi";
- case 421:s="Washington";
- case 422:s="Bobcat";
- case 423:s="Mr Whoopee";
- case 424:s="BF Injection";
- case 425:s="Hunter";
- case 426:s="Premier";
- case 427:s="Enforcer";
- case 428:s="Securicar";
- case 429:s="Banshee";
- case 430:s="Predator";
- case 431:s="Bus";
- case 432:s="Rhino";
- case 433:s="Barracks";
- case 434:s="Hotknife";
- case 435:s="Artic Trailer 1";
- case 436:s="Previon";
- case 437:s="Coach";
- case 438:s="Cabbie";
- case 439:s="Stallion";
- case 440:s="Rumpo";
- case 441:s="RC Bandit";
- case 442:s="Romero";
- case 443:s="Packer";
- case 444:s="Monster";
- case 445:s="Admiral";
- case 446:s="Squalo";
- case 447:s="Seasparrow";
- case 448:s="Pizza Boy";
- case 449:s="Tram";
- case 450:s="Artic Trailer 2";
- case 451:s="Turismo";
- case 452:s="Speeder";
- case 453:s="Reefer";
- case 454:s="Tropic";
- case 455:s="Flatbed";
- case 456:s="Yankee";
- case 457:s="Caddy";
- case 458:s="Solair";
- case 459:s="Top Fun";
- case 460:s="Skimmer";
- case 461:s="PCJ-600";
- case 462:s="Faggio";
- case 463:s="Freeway";
- case 464:s="RC Baron";
- case 465:s="RC Raider";
- case 466:s="Glendale";
- case 467:s="Oceanic";
- case 468:s="Sanchez";
- case 469:s="Sparrow";
- case 470:s="Patriot";
- case 471:s="Quad";
- case 472:s="Coastguard";
- case 473:s="Dinghy";
- case 474:s="Hermes";
- case 475:s="Sabre";
- case 476:s="Rustler";
- case 477:s="ZR-350";
- case 478:s="Walton";
- case 479:s="Regina";
- case 480:s="Comet";
- case 481:s="BMX";
- case 482:s="Burrito";
- case 483:s="Camper";
- case 484:s="Marquis";
- case 485:s="Baggage";
- case 486:s="Dozer";
- case 487:s="Maverick";
- case 488:s="SAN Maverick";
- case 489:s="Rancher";
- case 490:s="FBI Rancher";
- case 491:s="Virgo";
- case 492:s="Greenwood";
- case 493:s="Jetmax";
- case 494:s="Hotring";
- case 495:s="Sandking";
- case 496:s="Blista Compact";
- case 497:s="Police Maverick";
- case 498:s="Boxvillie";
- case 499:s="Benson";
- case 500:s="Mesa";
- case 501:s="RC Goblin";
- case 502:s="Hotring";
- case 503:s="Hotring";
- case 504:s="Bloodring Banger";
- case 505:s="Rancher";
- case 506:s="Super GT";
- case 507:s="Elegant";
- case 508:s="Journey";
- case 509:s="Bike";
- case 510:s="Mountain Bike";
- case 511:s="Beagle";
- case 512:s="Cropduster";
- case 513:s="Stuntplane";
- case 514:s="Petrol";
- case 515:s="Roadtrain";
- case 516:s="Nebula";
- case 517:s="Majestic";
- case 518:s="Buccaneer";
- case 519:s="Shamal";
- case 520:s="Hydra";
- case 521:s="FCR-900";
- case 522:s="NRG-500";
- case 523:s="HPV-1000";
- case 524:s="Cement Truck";
- case 525:s="Tow Truck";
- case 526:s="Fortune";
- case 527:s="Cadrona";
- case 528:s="FBI Truck";
- case 529:s="Williard";
- case 530:s="Forklift";
- case 531:s="Tractor";
- case 532:s="Combine";
- case 533:s="Feltzer";
- case 534:s="Remington";
- case 535:s="Slamvan";
- case 536:s="Blade";
- case 537:s="Freight";
- case 538:s="Streak";
- case 539:s="Vortex";
- case 540:s="Vincent";
- case 541:s="Bullet";
- case 542:s="Clover";
- case 543:s="Sadler";
- case 544:s="Firetruck";
- case 545:s="Hustler";
- case 546:s="Intruder";
- case 547:s="Primo";
- case 548:s="Cargobob";
- case 549:s="Tampa";
- case 550:s="Sunrise";
- case 551:s="Merit";
- case 552:s="Utility Van";
- case 553:s="Nevada";
- case 554:s="Yosemite";
- case 555:s="Windsor";
- case 556:s="Monster";
- case 557:s="Monster";
- case 558:s="Uranus";
- case 559:s="Jester";
- case 560:s="Sultan";
- case 561:s="Stratum";
- case 562:s="Elegy";
- case 563:s="Raindance";
- case 564:s="RC Tiger";
- case 565:s="Flash";
- case 566:s="Tahoma";
- case 567:s="Savanna";
- case 568:s="Bandito";
- case 569:s="Freight Flat";
- case 570:s="Streak";
- case 571:s="Kart";
- case 572:s="Mower";
- case 573:s="Duneride";
- case 574:s="Sweeper";
- case 575:s="Broadway";
- case 576:s="Tornado";
- case 577:s="AT-400";
- case 578:s="DFT-30";
- case 579:s="Huntley";
- case 580:s="Stafford";
- case 581:s="BF-400";
- case 582:s="News van";
- case 583:s="Tug";
- case 584:s="Petrol Tanker";
- case 585:s="Emperor";
- case 586:s="Wayfarer";
- case 587:s="Euros";
- case 588:s="Hotdog";
- case 589:s="Club";
- case 590:s="Freight Box";
- case 591:s="Artic Trailer";
- case 592:s="Andromada";
- case 593:s="Dodo";
- case 594:s="RC Cam";
- case 595:s="Launch";
- case 596:s="Cop Car LS";
- case 597:s="Cop Car SF";
- case 598:s="Cop Car LV";
- case 599:s="Ranger";
- case 600:s="Picador";
- case 601:s="Swat Tank";
- case 602:s="Alpha";
- case 603:s="Phoenix";
- case 604:s="Glendale";
- case 605:s="Sadler";
- case 606:s="Bag Box";
- case 607:s="Bag Box";
- case 608:s="Stairs";
- case 609:s="Boxville";
- case 610:s="Farm Trailer";
- case 611:s="Utility Trailer";
- }
- return s;
- }
- stock sscanf(string[], format[], {Float,_}:...)
- {
- #if defined isnull
- if (isnull(string))
- #else
- if (string[0] == 0 || (string[0] == 1 && string[1] == 0))
- #endif
- {
- return format[0];
- }
- #pragma tabsize 4
- new
- formatPos = 0,
- stringPos = 0,
- paramPos = 2,
- paramCount = numargs(),
- delim = ' ';
- while (string[stringPos] && string[stringPos] <= ' ')
- {
- stringPos++;
- }
- while (paramPos < paramCount && string[stringPos])
- {
- switch (format[formatPos++])
- {
- case '\0':
- {
- return 0;
- }
- case 'i', 'd':
- {
- new
- neg = 1,
- num = 0,
- ch = string[stringPos];
- if (ch == '-')
- {
- neg = -1;
- ch = string[++stringPos];
- }
- do
- {
- stringPos++;
- if ('0' <= ch <= '9')
- {
- num = (num * 10) + (ch - '0');
- }
- else
- {
- return -1;
- }
- }
- while ((ch = string[stringPos]) > ' ' && ch != delim);
- setarg(paramPos, 0, num * neg);
- }
- case 'h', 'x':
- {
- new
- num = 0,
- ch = string[stringPos];
- do
- {
- stringPos++;
- switch (ch)
- {
- case 'x', 'X':
- {
- num = 0;
- continue;
- }
- case '0' .. '9':
- {
- num = (num << 4) | (ch - '0');
- }
- case 'a' .. 'f':
- {
- num = (num << 4) | (ch - ('a' - 10));
- }
- case 'A' .. 'F':
- {
- num = (num << 4) | (ch - ('A' - 10));
- }
- default:
- {
- return -1;
- }
- }
- }
- while ((ch = string[stringPos]) > ' ' && ch != delim);
- setarg(paramPos, 0, num);
- }
- case 'c':
- {
- setarg(paramPos, 0, string[stringPos++]);
- }
- case 'f':
- {
- new changestr[16], changepos = 0, strpos = stringPos;
- while(changepos < 16 && string[strpos] && string[strpos] != delim)
- {
- changestr[changepos++] = string[strpos++];
- }
- changestr[changepos] = '\0';
- setarg(paramPos,0,_:floatstr(changestr));
- }
- case 'p':
- {
- delim = format[formatPos++];
- continue;
- }
- case '\'':
- {
- new
- end = formatPos - 1,
- ch;
- while ((ch = format[++end]) && ch != '\'') {}
- if (!ch)
- {
- return -1;
- }
- format[end] = '\0';
- if ((ch = strfind(string, format[formatPos], false, stringPos)) == -1)
- {
- if (format[end + 1])
- {
- return -1;
- }
- return 0;
- }
- format[end] = '\'';
- stringPos = ch + (end - formatPos);
- formatPos = end + 1;
- }
- case 'u':
- {
- new
- end = stringPos - 1,
- id = 0,
- bool:num = true,
- ch;
- while ((ch = string[++end]) && ch != delim)
- {
- if (num)
- {
- if ('0' <= ch <= '9')
- {
- id = (id * 10) + (ch - '0');
- }
- else
- {
- num = false;
- }
- }
- }
- if (num && IsPlayerConnected(id))
- {
- setarg(paramPos, 0, id);
- }
- else
- {
- #if !defined foreach
- #define foreach(%1,%2) for (new %2 = 0; %2 < MAX_PLAYERS_EX; %2++) if (IsPlayerConnected(%2))
- #define __SSCANF_FOREACH__
- #endif
- string[end] = '\0';
- num = false;
- new
- name[MAX_PLAYER_NAME];
- id = end - stringPos;
- foreach (Player, playerid)
- {
- GetPlayerName(playerid, name, sizeof (name));
- if (!strcmp(name, string[stringPos], true, id))
- {
- setarg(paramPos, 0, playerid);
- num = true;
- break;
- }
- }
- if (!num)
- {
- setarg(paramPos, 0, INVALID_PLAYER_ID);
- }
- string[end] = ch;
- #if defined __SSCANF_FOREACH__
- #undef foreach
- #undef __SSCANF_FOREACH__
- #endif
- }
- stringPos = end;
- }
- case 's', 'z':
- {
- new
- i = 0,
- ch;
- if (format[formatPos])
- {
- while ((ch = string[stringPos++]) && ch != delim)
- {
- setarg(paramPos, i++, ch);
- }
- if (!i)
- {
- return -1;
- }
- }
- else
- {
- while ((ch = string[stringPos++]))
- {
- setarg(paramPos, i++, ch);
- }
- }
- stringPos--;
- setarg(paramPos, i, '\0');
- }
- default:
- {
- continue;
- }
- }
- while (string[stringPos] && string[stringPos] != delim && string[stringPos] > ' ')
- {
- stringPos++;
- }
- while (string[stringPos] && (string[stringPos] == delim || string[stringPos] <= ' '))
- {
- stringPos++;
- }
- paramPos++;
- }
- do
- {
- if ((delim = format[formatPos++]) > ' ')
- {
- if (delim == '\'')
- {
- while ((delim = format[formatPos++]) && delim != '\'') {}
- }
- else if (delim != 'z')
- {
- return delim;
- }
- }
- }
- while (delim > ' ');
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement