Advertisement
Guest User

Zezombia

a guest
Jan 11th, 2009
5,342
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 12.10 KB | None | 0 0
  1. #include <a_samp>
  2. #include <dini>
  3.  
  4. //EDIT BLOW
  5.  
  6. new DefaultVehOwners[][] =
  7. {
  8.     "Zezombia",
  9.     "YoMomma",
  10.     "Poopsicle"
  11. };
  12.  
  13. new VehIDs[][] =
  14. {
  15.     "411",
  16.     "541",
  17.     "415"
  18. };
  19.  
  20. #define MAX_VEHS 3
  21.  
  22. //END OF EDIT
  23.  
  24. #define yellow 0xFFFF00AA
  25. #define red 0xFF0000AA
  26. #define green 0x33FF33AA
  27.  
  28. forward AfterPlayerConnect(playerid);
  29.  
  30. enum Variables
  31. {
  32.     ID,
  33.     Ammount
  34. }
  35.  
  36. new Cars[MAX_VEHS];
  37. new BuySell[MAX_PLAYERS][Variables];
  38.  
  39. public OnFilterScriptInit()
  40. {
  41.     if(dini_Exists("vehs") == 0)
  42.     {
  43.         dini_Create("vehs");
  44.  
  45.         for(new i = 0; i < MAX_VEHS; i++)
  46.         {
  47.             new veh[5], string[128];
  48.             format(veh, sizeof(veh), "%d", i);
  49.  
  50.             format(string, sizeof(string), "%s 0.0000 0.0000 5.0000 0.0000", DefaultVehOwners[i]);
  51.             dini_Set("vehs", veh, string);
  52.         }
  53.     }
  54.    
  55.     for(new i = 0; i < MAX_VEHS; i++)
  56.     {
  57.         new veh[5], string[128];
  58.         format(veh, sizeof(veh), "%d", i);
  59.        
  60.         if(dini_Isset("vehs", veh) == 0)
  61.         {
  62.             format(string, sizeof(string), "%s 0.0000 0.0000 5.0000 0.0000", DefaultVehOwners[i]);
  63.             dini_Set("vehs", veh, string);
  64.         }
  65.     }
  66.  
  67.     for(new i = 0; i < MAX_VEHS; i++)
  68.     {
  69.         new Float:X, Float:Y, Float:Z, Float:A;
  70.         new veh[5], get_veh[128], pos;
  71.  
  72.         for(new v = 0; v < 4; v++)
  73.         {
  74.             format(veh, sizeof(veh), "%d", i);
  75.             format(get_veh, sizeof(get_veh), "%s", dini_Get("vehs", veh));
  76.             pos = strfind(get_veh, " ", true);
  77.             strdel(get_veh, 0, pos + 1);
  78.        
  79.             if(v == 0)
  80.             {
  81.                 pos = strfind(get_veh, " ", true);
  82.                 strdel(get_veh, pos, strlen(get_veh));
  83.                
  84.                 X = strval(get_veh);
  85.             }
  86.            
  87.             if(v == 1)
  88.             {
  89.                 pos = strfind(get_veh, " ", true);
  90.                 strdel(get_veh, 0, pos + 1);
  91.                
  92.                 pos = strfind(get_veh, " ", true);
  93.                 strdel(get_veh, pos, strlen(get_veh));
  94.  
  95.                 Y = strval(get_veh);
  96.             }
  97.            
  98.             if(v == 2)
  99.             {
  100.                 pos = strfind(get_veh, " ", true);
  101.                 strdel(get_veh, 0, pos + 1);
  102.                
  103.                 pos = strfind(get_veh, " ", true);
  104.                 strdel(get_veh, 0, pos + 1);
  105.  
  106.                 pos = strfind(get_veh, " ", true);
  107.                 strdel(get_veh, pos, strlen(get_veh));
  108.  
  109.                 Z = strval(get_veh);
  110.             }
  111.            
  112.             if(v == 3)
  113.             {
  114.                 pos = strfind(get_veh, " ", true);
  115.                 strdel(get_veh, 0, pos + 1);
  116.  
  117.                 pos = strfind(get_veh, " ", true);
  118.                 strdel(get_veh, 0, pos + 1);
  119.                
  120.                 pos = strfind(get_veh, " ", true);
  121.                 strdel(get_veh, 0, pos + 1);
  122.  
  123.                 A = strval(get_veh);
  124.             }
  125.         }
  126.  
  127.         Cars[i] = CreateVehicle(strval(VehIDs[i]), X, Y, Z, A, -1, -1, 60);
  128.     }
  129.     return 1;
  130. }
  131.  
  132. public OnFilterScriptExit()
  133. {
  134.     for(new i = 0; i < MAX_VEHS; i++)
  135.     {
  136.         DestroyVehicle(Cars[i]);
  137.     }
  138.     return 1;
  139. }
  140.  
  141. public OnPlayerConnect(playerid)
  142. {
  143.     SetTimerEx("AfterPlayerConnect", 1000, 0, "i", playerid);
  144.     return 1;
  145. }
  146.  
  147. public AfterPlayerConnect(playerid)
  148. {
  149.     BuySell[playerid][ID] = -1;
  150.     return 1;
  151. }
  152.  
  153. public OnPlayerCommandText(playerid, cmdtext[])
  154. {
  155.     new cmd[128], idx;
  156.     cmd = strtok(cmdtext, idx);
  157.  
  158.     if(strcmp("/vehhelp", cmdtext, true) == 0)
  159.     {
  160.         new pname[MAX_PLAYER_NAME], vehicle = -1;
  161.         GetPlayerName(playerid, pname, sizeof(pname));
  162.  
  163.         for(new i = 0; i < MAX_VEHS; i++)
  164.         {
  165.             new veh[5], get_veh[128];
  166.             format(veh, sizeof(veh), "%d", i);
  167.             format(get_veh, sizeof(get_veh), "%s", dini_Get("vehs", veh));
  168.  
  169.             new pos = strfind(get_veh, " ", true);
  170.             strdel(get_veh, pos, pos + strlen(get_veh));
  171.  
  172.             if(strcmp(pname, get_veh, true) == 0)
  173.             {
  174.                 vehicle = i;
  175.             }
  176.         }
  177.  
  178.         if(vehicle == -1)
  179.         {
  180.             SendClientMessage(playerid, red, "You do not own a vehicle");
  181.         }
  182.         else
  183.         {
  184.             SendClientMessage(playerid, green, "You own a vehicle!");
  185.             SendClientMessage(playerid, green, "/gotoveh to go to it");
  186.             SendClientMessage(playerid, green, "/park to save it's position");
  187.             SendClientMessage(playerid, green, "/sellveh to sell it to someone");
  188.         }
  189.         return 1;
  190.     }
  191.    
  192.     if(strcmp("/gotoveh", cmdtext, true) == 0)
  193.     {
  194.         new pname[MAX_PLAYER_NAME], vehicle = -1;
  195.         GetPlayerName(playerid, pname, sizeof(pname));
  196.        
  197.         for(new i = 0; i < MAX_VEHS; i++)
  198.         {
  199.             new veh[5], get_veh[128];
  200.             format(veh, sizeof(veh), "%d", i);
  201.             format(get_veh, sizeof(get_veh), "%s", dini_Get("vehs", veh));
  202.  
  203.             new pos = strfind(get_veh, " ", true);
  204.             strdel(get_veh, pos, pos + strlen(get_veh));
  205.  
  206.             if(strcmp(pname, get_veh, true) == 0)
  207.             {
  208.                 vehicle = i;
  209.             }
  210.         }
  211.        
  212.         if(vehicle == -1)
  213.         {
  214.             SendClientMessage(playerid, red, "You do not own a vehicle");
  215.         }
  216.         else
  217.         {
  218.             /*new Float:X, Float:Y, Float:Z;
  219.             GetVehiclePos(Cars[vehicle], X, Y, Z);
  220.             SetPlayerPos(playerid, X, Y, Z + 3);*/
  221.            
  222.             PutPlayerInVehicle(playerid, Cars[vehicle], 0);
  223.  
  224.             SendClientMessage(playerid, yellow, "You have been teleported to your vehicle");
  225.         }
  226.         return 1;
  227.     }
  228.    
  229.     if(strcmp("/park", cmd, true) == 0)
  230.     {
  231.         new pname[MAX_PLAYER_NAME], vehicle = -1;
  232.         GetPlayerName(playerid, pname, sizeof(pname));
  233.  
  234.         for(new i = 0; i < MAX_VEHS; i++)
  235.         {
  236.             new veh[5], get_veh[128];
  237.             format(veh, sizeof(veh), "%d", i);
  238.             format(get_veh, sizeof(get_veh), "%s", dini_Get("vehs", veh));
  239.  
  240.             new pos = strfind(get_veh, " ", true);
  241.             strdel(get_veh, pos, pos + strlen(get_veh));
  242.  
  243.             if(strcmp(pname, get_veh, true) == 0)
  244.             {
  245.                 vehicle = i;
  246.             }
  247.         }
  248.  
  249.         if(vehicle == -1)
  250.         {
  251.             SendClientMessage(playerid, red, "You do not own a vehicle");
  252.         }
  253.         else
  254.         {
  255.             new Float:X, Float:Y, Float:Z, Float:A, string[128], get_veh[128], veh[5], pos;
  256.             GetVehiclePos(Cars[vehicle], X, Y, Z);
  257.             GetVehicleZAngle(Cars[vehicle], A);
  258.            
  259.             format(veh, sizeof(veh), "%d", vehicle);
  260.             format(get_veh, sizeof(get_veh), "%s", dini_Get("vehs", veh));
  261.             pos = strfind(get_veh, " ", true);
  262.             strdel(get_veh, 0, pos + 1);
  263.  
  264.             format(string, sizeof(string), "%s %0.4f %0.4f %0.4f %0.4f", pname, X, Y, Z, A);
  265.             dini_Set("vehs", veh, string);
  266.  
  267.             SendClientMessage(playerid, yellow, "You have saved your cars position");
  268.             DestroyVehicle(Cars[vehicle]);
  269.             Cars[vehicle] = CreateVehicle(strval(VehIDs[vehicle]), X, Y, Z, A, -1, -1, 60);
  270.         }
  271.         return 1;
  272.     }
  273.    
  274.     if(strcmp("/sellveh", cmd, true) == 0)
  275.     {
  276.         new tmp[128], tmp2[128], id;
  277.         tmp = strtok(cmdtext, idx);
  278.         tmp2 = strtok(cmdtext, idx);
  279.  
  280.         if(strlen(tmp) == 0) return SendClientMessage(playerid, red, "You did not enter an ID");
  281.         if(strlen(tmp2) == 0) return SendClientMessage(playerid, red, "You did not enter a cash ammount");
  282.         if(strval(tmp2) > 10000000 || strval(tmp2) < 0) return SendClientMessage(playerid, red, "Invalid cash ammount");
  283.         if(IsPlayerConnected(strval(tmp)) == 0) return SendClientMessage(playerid, red, "That player is not connected");
  284.  
  285.         id = strval(tmp);
  286.  
  287.         new pname[MAX_PLAYER_NAME], oname[MAX_PLAYER_NAME], get_veh[128], veh[5], vehicle = -1, ovehicle = -1, pos;
  288.         GetPlayerName(playerid, pname, sizeof(pname));
  289.         GetPlayerName(strval(tmp), oname, sizeof(oname));
  290.  
  291.         for(new i = 0; i < MAX_VEHS; i++)
  292.         {
  293.             format(veh, sizeof(veh), "%d", i);
  294.             format(get_veh, sizeof(get_veh), "%s", dini_Get("vehs", veh));
  295.  
  296.             pos = strfind(get_veh, " ", true);
  297.             strdel(get_veh, pos, pos + strlen(get_veh));
  298.  
  299.             if(strcmp(pname, get_veh, true) == 0)
  300.             {
  301.                 vehicle = i;
  302.             }
  303.         }
  304.  
  305.         for(new i = 0; i < MAX_VEHS; i++)
  306.         {
  307.             format(veh, sizeof(veh), "%d", i);
  308.             format(get_veh, sizeof(get_veh), "%s", dini_Get("vehs", veh));
  309.  
  310.             pos = strfind(get_veh, " ", true);
  311.             strdel(get_veh, pos, pos + strlen(get_veh));
  312.  
  313.             if(strcmp(oname, get_veh, true) == 0)
  314.             {
  315.                 ovehicle = i;
  316.                 printf("%d", i);
  317.             }
  318.         }
  319.  
  320.         if(vehicle == -1)
  321.         {
  322.             SendClientMessage(playerid, red, "You do not own a vehicle");
  323.         }
  324.         else
  325.         {
  326.             if(ovehicle == -1)
  327.             {
  328.                 format(tmp, sizeof(tmp), "You have offered your vehicle to %s for $%d", oname, strval(tmp2));
  329.                 SendClientMessage(playerid, yellow, tmp);
  330.  
  331.                 format(tmp, sizeof(tmp), "%s has offered to sell his vehicle to you for $%d", pname, strval(tmp2));
  332.                 SendClientMessage(id, yellow, tmp);
  333.                 SendClientMessage(id, yellow, "You can eather /accept it or /decline it");
  334.            
  335.                 BuySell[id][ID] = playerid;
  336.                 BuySell[id][Ammount] = strval(tmp2);
  337.             }
  338.             else
  339.             {
  340.                 SendClientMessage(playerid, red, "That player already owns a vehicle");
  341.             }
  342.         }
  343.         return 1;
  344.     }
  345.    
  346.     if(strcmp("/accept", cmdtext, true) == 0)
  347.     {
  348.         if(BuySell[playerid][ID] == -1)
  349.         {
  350.             SendClientMessage(playerid, red, "You don't have an offer");
  351.         }
  352.         else
  353.         {
  354.             if(GetPlayerMoney(playerid) < BuySell[playerid][Ammount])
  355.             {
  356.                 new pname[MAX_PLAYER_NAME], oname[MAX_PLAYER_NAME], tmp[128];
  357.                 GetPlayerName(playerid, pname, sizeof(pname));
  358.                 GetPlayerName(BuySell[playerid][ID], oname, sizeof(oname));
  359.                
  360.                 format(tmp, sizeof(tmp), "%s did not have enough money", pname);
  361.                 SendClientMessage(BuySell[playerid][ID], yellow, tmp);
  362.  
  363.                 SendClientMessage(playerid, yellow, "You do not have enough money");
  364.             }
  365.             else
  366.             {
  367.                 new pname[MAX_PLAYER_NAME], oname[MAX_PLAYER_NAME], tmp[128], veh[5], vehicle, pos;
  368.                 GetPlayerName(playerid, pname, sizeof(pname));
  369.                 GetPlayerName(BuySell[playerid][ID], oname, sizeof(oname));
  370.  
  371.                 for(new i = 0; i < MAX_VEHS; i++)
  372.                 {
  373.                     new get_veh[128];
  374.                     format(veh, sizeof(veh), "%d", i);
  375.                     format(get_veh, sizeof(get_veh), "%s", dini_Get("vehs", veh));
  376.  
  377.                     pos = strfind(get_veh, " ", true);
  378.                     strdel(get_veh, pos, pos + strlen(get_veh));
  379.  
  380.                     if(strcmp(oname, get_veh, true) == 0)
  381.                     {
  382.                         vehicle = i;
  383.                     }
  384.                 }
  385.  
  386.                 new Float:X, Float:Y, Float:Z, Float:A, string[128], get_veh[128];
  387.                 GetVehiclePos(Cars[vehicle], X, Y, Z);
  388.                 GetVehicleZAngle(Cars[vehicle], A);
  389.  
  390.                 format(veh, sizeof(veh), "%d", vehicle);
  391.                 format(get_veh, sizeof(get_veh), "%s", dini_Get("vehs", veh));
  392.                 pos = strfind(get_veh, " ", true);
  393.                 strdel(get_veh, 0, pos + 1);
  394.  
  395.                 format(string, sizeof(string), "%s %0.4f %0.4f %0.4f %0.4f", pname, X, Y, Z, A);
  396.                 dini_Set("vehs", veh, string);
  397.  
  398.                 format(tmp, sizeof(tmp), "You have gave your vehicle to %s", pname);
  399.                 SendClientMessage(BuySell[playerid][ID], yellow, tmp);
  400.  
  401.                 format(tmp, sizeof(tmp), "You have recived a vehicle from %s", oname);
  402.                 SendClientMessage(playerid, yellow, tmp);
  403.  
  404.                 GivePlayerMoney(BuySell[playerid][ID], BuySell[playerid][Ammount]);
  405.                 GivePlayerMoney(playerid, -BuySell[playerid][Ammount]);
  406.  
  407.                 BuySell[playerid][ID] = -1;
  408.  
  409.                 DestroyVehicle(Cars[vehicle]);
  410.                 Cars[vehicle] = CreateVehicle(strval(VehIDs[vehicle]), X, Y, Z, A, -1, -1, 60);
  411.             }
  412.         }
  413.         return 1;
  414.     }
  415.    
  416.     if(strcmp("/decline", cmdtext, true) == 0)
  417.     {
  418.         if(BuySell[playerid][ID] == -1)
  419.         {
  420.             SendClientMessage(playerid, red, "You don't have an offer");
  421.         }
  422.         else
  423.         {
  424.             new pname[MAX_PLAYER_NAME], oname[MAX_PLAYER_NAME], string[128];
  425.             GetPlayerName(playerid, pname, sizeof(pname));
  426.             GetPlayerName(BuySell[playerid][ID], oname, sizeof(oname));
  427.            
  428.             format(string, sizeof(string), "You have declined %ss offer", oname);
  429.             SendClientMessage(playerid, yellow, string);
  430.            
  431.             format(string, sizeof(string), "%s has declined your offer", pname);
  432.             SendClientMessage(BuySell[playerid][ID], yellow, string);
  433.            
  434.             BuySell[playerid][ID] = -1;
  435.         }
  436.         return 1;
  437.     }
  438.     return 0;
  439. }
  440.  
  441. public OnPlayerStateChange(playerid, newstate, oldstate)
  442. {
  443.     if(newstate == PLAYER_STATE_DRIVER)
  444.     {
  445.         new pname[MAX_PLAYER_NAME];
  446.         GetPlayerName(playerid, pname, sizeof(pname));
  447.        
  448.         for(new i = 0; i < MAX_VEHS; i++)
  449.         {
  450.             if(GetPlayerVehicleID(playerid) == Cars[i])
  451.             {
  452.                 new veh[5], get_veh[128];
  453.                 format(veh, sizeof(veh), "%d", i);
  454.                 format(get_veh, sizeof(get_veh), "%s", dini_Get("vehs", veh));
  455.  
  456.                 new pos = strfind(get_veh, " ", true);
  457.                 strdel(get_veh, pos, pos + strlen(get_veh));
  458.  
  459.                 if(strcmp(pname, get_veh, true) == 0)
  460.                 {
  461.                     SendClientMessage(playerid, yellow, "Welcome to your car");
  462.                 }
  463.                 else
  464.                 {
  465.                     SendClientMessage(playerid, red, "This is not your vehicle");
  466.                     RemovePlayerFromVehicle(playerid);
  467.                 }
  468.             }
  469.         }
  470.     }
  471.     return 1;
  472. }
  473.  
  474. strtok(const string[], &index)
  475. {
  476.     new length = strlen(string);
  477.     while ((index < length) && (string[index] <= ' '))
  478.     {
  479.         index++;
  480.     }
  481.  
  482.     new offset = index;
  483.     new result[20];
  484.     while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
  485.     {
  486.         result[index - offset] = string[index];
  487.         index++;
  488.     }
  489.     result[index - offset] = EOS;
  490.     return result;
  491. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement