Guest User

Untitled

a guest
Nov 29th, 2024
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 6.83 KB | None | 0 0
  1. // Dodajte ove definicije na početak koda
  2. #define MAX_PLAYER_ATTACHED_OBJECTS 10
  3. #define BOJA_ZELENA     0x00FF0050
  4. // Ja sam koristio YCMD vi prilagodite sebi tako i objekte :D
  5.  
  6. // Dodajte ove varijable
  7. new AttachmentObjects[][] = {
  8.     {18632, "Kovčeg"},
  9.     {18633, "Torba"},
  10.     {18634, "Novac"},
  11.     {18635, "Srce"},
  12.     {18636, "Pilula"},
  13.     {18637, "Nož"},
  14.     {18638, "Pištolj"},
  15.     {18639, "Shotgun"},
  16.     {18640, "Sprej"},
  17.     {18641, "Foto aparat"},
  18.     {18642, "Dildo"},
  19.     {18643, "Mobilni"},
  20.     {18644, "Sat"},
  21.     {19006, "Policijska značka"},
  22.     {19200, "Gitara"},
  23.     {19348, "Pizza"},
  24.     {19349, "Hamburger"},
  25.     {19350, "Hot Dog"},
  26.     {19351, "Sladoled"},
  27.     {19352, "Pivo"}
  28. };
  29.  
  30. // Dialozi
  31. enum {
  32.     DIALOG_ATTACH,
  33.     DIALOG_ATTACH_INDEX,
  34.     DIALOG_ATTACH_EDIT,
  35.     DIALOG_ATTACH_REMOVE,
  36. }
  37.  
  38. // Komanda za attachment
  39. YCMD:attach(playerid, params[], help)
  40. {
  41.     new string[128];
  42.     strcat(string, "1. Dodaj novi objekat\n");
  43.     strcat(string, "2. Uredi postojeći objekat\n");
  44.     strcat(string, "3. Ukloni objekat\n");
  45.     strcat(string, "4. Ukloni sve objekte");
  46.    
  47.     ShowPlayerDialog(playerid, DIALOG_ATTACH, DIALOG_STYLE_LIST,
  48.         "Attachment Menu", string, "Izaberi", "Izlaz");
  49.     return 1;
  50. }
  51.  
  52. // Dodajte ovo u OnDialogResponse
  53. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  54. {
  55.     switch(dialogid)
  56.     {
  57.         case DIALOG_ATTACH:
  58.         {
  59.             if(!response) return 1;
  60.            
  61.             switch(listitem)
  62.             {
  63.                 case 0: // Dodaj novi
  64.                 {
  65.                     new string[1024];
  66.                     for(new i = 0; i < sizeof(AttachmentObjects); i++)
  67.                     {
  68.                         format(string, sizeof(string), "%s%s\n", string, AttachmentObjects[i][1]);
  69.                     }
  70.                     ShowPlayerDialog(playerid, DIALOG_ATTACH_INDEX, DIALOG_STYLE_LIST,
  71.                         "Izaberi Objekat", string, "Dodaj", "Nazad");
  72.                 }
  73.                 case 1: // Uredi postojeći
  74.                 {
  75.                     new string[512];
  76.                     for(new i = 0; i < MAX_PLAYER_ATTACHED_OBJECTS; i++)
  77.                     {
  78.                         if(IsPlayerAttachedObjectSlotUsed(playerid, i))
  79.                         {
  80.                             format(string, sizeof(string), "%sSlot %d\n", string, i);
  81.                         }
  82.                     }
  83.                     if(strlen(string) < 1)
  84.                     {
  85.                         SendClientMessage(playerid, BOJA_CRVENA, "Nemate prikačenih objekata!");
  86.                         return ShowPlayerDialog(playerid, DIALOG_ATTACH, DIALOG_STYLE_LIST,
  87.                             "Attachment Menu", "1. Dodaj novi objekat\n2. Uredi postojeći objekat\n3. Ukloni objekat\n4. Ukloni sve objekte",
  88.                             "Izaberi", "Izlaz");
  89.                     }
  90.                     ShowPlayerDialog(playerid, DIALOG_ATTACH_EDIT, DIALOG_STYLE_LIST,
  91.                         "Izaberi Slot", string, "Uredi", "Nazad");
  92.                 }
  93.                 case 2: // Ukloni
  94.                 {
  95.                     new string[512];
  96.                     for(new i = 0; i < MAX_PLAYER_ATTACHED_OBJECTS; i++)
  97.                     {
  98.                         if(IsPlayerAttachedObjectSlotUsed(playerid, i))
  99.                         {
  100.                             format(string, sizeof(string), "%sSlot %d\n", string, i);
  101.                         }
  102.                     }
  103.                     if(strlen(string) < 1)
  104.                     {
  105.                         SendClientMessage(playerid, BOJA_CRVENA, "Nemate prikačenih objekata!");
  106.                         return ShowPlayerDialog(playerid, DIALOG_ATTACH, DIALOG_STYLE_LIST,
  107.                             "Attachment Menu", "1. Dodaj novi objekat\n2. Uredi postojeći objekat\n3. Ukloni objekat\n4. Ukloni sve objekte",
  108.                             "Izaberi", "Izlaz");
  109.                     }
  110.                     ShowPlayerDialog(playerid, DIALOG_ATTACH_REMOVE, DIALOG_STYLE_LIST,
  111.                         "Izaberi Slot za Uklanjanje", string, "Ukloni", "Nazad");
  112.                 }
  113.                 case 3: // Ukloni sve
  114.                 {
  115.                     for(new i = 0; i < MAX_PLAYER_ATTACHED_OBJECTS; i++)
  116.                     {
  117.                         if(IsPlayerAttachedObjectSlotUsed(playerid, i))
  118.                         {
  119.                             RemovePlayerAttachedObject(playerid, i);
  120.                         }
  121.                     }
  122.                     SendClientMessage(playerid, BOJA_ZELENA, "* Uklonjeni su svi prikačeni objekti.");
  123.                 }
  124.             }
  125.         }
  126.        
  127.         case DIALOG_ATTACH_INDEX:
  128.         {
  129.             if(!response)
  130.                 return cmd_attach(playerid, "");
  131.                
  132.             new slot = -1;
  133.             for(new i = 0; i < MAX_PLAYER_ATTACHED_OBJECTS; i++)
  134.             {
  135.                 if(!IsPlayerAttachedObjectSlotUsed(playerid, i))
  136.                 {
  137.                     slot = i;
  138.                     break;
  139.                 }
  140.             }
  141.            
  142.             if(slot == -1)
  143.                 return SendClientMessage(playerid, BOJA_CRVENA, "Nemate slobodnih slotova za objekte!");
  144.                
  145.             SetPlayerAttachedObject(playerid, slot, AttachmentObjects[listitem][0], 1,
  146.                 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0);
  147.                
  148.             EditAttachedObject(playerid, slot);
  149.            
  150.             new string[128];
  151.             format(string, sizeof(string), "* Prikačili ste objekat: %s (Slot: %d)",
  152.                 AttachmentObjects[listitem][1], slot);
  153.             SendClientMessage(playerid, BOJA_ZELENA, string);
  154.         }
  155.        
  156.         case DIALOG_ATTACH_EDIT:
  157.         {
  158.             if(!response)
  159.                 return cmd_attach(playerid, "");
  160.                
  161.             EditAttachedObject(playerid, listitem);
  162.         }
  163.        
  164.         case DIALOG_ATTACH_REMOVE:
  165.         {
  166.             if(!response)
  167.                 return cmd_attach(playerid, "");
  168.                
  169.             RemovePlayerAttachedObject(playerid, listitem);
  170.             SendClientMessage(playerid, BOJA_ZELENA, "* Uspješno ste uklonili objekat.");
  171.         }
  172.     }
  173.     return 1;
  174. }
  175.  
  176. // Dodajte ovo za spremanje pozicije nakon editovanja
  177. public OnPlayerEditAttachedObject(playerid, response, index, modelid, boneid,Float:fOffsetX, Float:fOffsetY, Float:fOffsetZ,Float:fRotX, Float:fRotY, Float:fRotZ,Float:fScaleX, Float:fScaleY, Float:fScaleZ)
  178. {
  179.     if(response)
  180.     {
  181.         SetPlayerAttachedObject(playerid, index, modelid, boneid,fOffsetX, fOffsetY, fOffsetZ,fRotX, fRotY, fRotZ,fScaleX, fScaleY, fScaleZ);
  182.            
  183.         SendClientMessage(playerid, BOJA_ZELENA, "* Uspješno ste podesili poziciju objekta.");
  184.     }
  185.     return 1;
  186. }
Add Comment
Please, Sign In to add comment