Guest User

SA-MP Teleportsystem

a guest
Feb 15th, 2013
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 5.69 KB | None | 0 0
  1. /*
  2.     Teleportsystem
  3.     copyright by pwnfl4sh
  4. */
  5.  
  6. #include <a_samp>
  7. #include <zcmd>
  8. #include <dini>
  9.  
  10. #define MAX_TELEPORTS 32
  11.  
  12. #define COLOR_GREEN 0x33AA33AA
  13. #define COLOR_RED 0xAA3333AA
  14.  
  15. new createdports = 0;
  16.  
  17. new ListItemSlot[MAX_TELEPORTS];
  18.  
  19. public OnFilterScriptInit()
  20. {
  21.     print("Teleportsystem gestartet!");
  22.    
  23.     createdports = 0;
  24.  
  25.     new path[64];
  26.    
  27.     for(new i=0;i<MAX_TELEPORTS;i++)
  28.     {
  29.         ListItemSlot[i] = -1;
  30.        
  31.         format(path,64,"teleport_%d.txt",i);
  32.        
  33.         if(dini_Exists(path))
  34.         {
  35.             createdports ++;
  36.         }
  37.     }
  38.     return 1;
  39. }
  40.  
  41. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  42. {
  43.     if(response)
  44.     {
  45.         if(dialogid == 1336)
  46.         {
  47.             OrderPorts();
  48.            
  49.             if(listitem == 0)
  50.             {
  51.                 if(createdports == 0) return SendClientMessage(playerid,COLOR_RED,"Bisher wurden noch keine Teleports erstellt!");
  52.                
  53.                 new str[1024], path[64];
  54.  
  55.                 for(new i=0;i<MAX_TELEPORTS;i++)
  56.                 {
  57.                     format(path,64,"teleport_%d.txt",i);
  58.                    
  59.                     if(dini_Exists(path))
  60.                     {
  61.                         format(str,1024,"%s\n{33AA33}%d - %s",str,i,dini_Get(path,"Name"));
  62.                     }
  63.                 }
  64.  
  65.                 ShowPlayerDialog(playerid,1337,DIALOG_STYLE_LIST,"Teleports",str,"Los!","Zurück");
  66.             }
  67.             else if(listitem == 1)
  68.             {
  69.                 if(createdports == 0) return SendClientMessage(playerid,COLOR_RED,"Bisher wurden noch keine Teleports erstellt!");
  70.                
  71.                 new str[1024], path[64];
  72.  
  73.                 for(new i=0;i<MAX_TELEPORTS;i++)
  74.                 {
  75.                     format(path,64,"teleport_%d.txt",i);
  76.  
  77.                     if(dini_Exists(path))
  78.                     {
  79.                         format(str,1024,"%s\n{33AA33}%d - %s",str,i,dini_Get(path,"Name"));
  80.                     }
  81.                 }
  82.  
  83.                 ShowPlayerDialog(playerid,1338,DIALOG_STYLE_LIST,"Teleports löschen",str,"Löschen!","Zurück");
  84.             }
  85.             else if(listitem == 2)
  86.             {
  87.                 ShowPlayerDialog(playerid,1339,DIALOG_STYLE_INPUT,"Teleports erstellen","Gib einen Namen für diesen Ort ein:","Erstellen!","Zurück");
  88.             }
  89.         }
  90.         if(dialogid == 1337)
  91.         {
  92.             new path[64], str[144];
  93.             format(path,64,"teleport_%d.txt",ListItemSlot[listitem]);
  94.            
  95.             if(dini_Exists(path))
  96.             {
  97.                 SetPlayerPos(playerid,dini_Float(path,"X"),dini_Float(path,"Y"),dini_Float(path,"Z"));
  98.                 SetPlayerInterior(playerid,dini_Int(path,"Interior"));
  99.                 SetPlayerVirtualWorld(playerid,dini_Int(path,"World"));
  100.                 format(str,144,"Du hast dich zum Teleport \"%s\" (ID: %d) geportet.",dini_Get(path,"Name"),ListItemSlot[listitem]);
  101.                 SendClientMessage(playerid,COLOR_GREEN,str);
  102.             }
  103.             else
  104.             {
  105.                 SendClientMessage(playerid,COLOR_RED,"FEHLER: Teleport wurde nicht gefunden.");
  106.             }
  107.         }
  108.         else if(dialogid == 1338)
  109.         {
  110.             new path[64];
  111.             format(path,64,"teleport_%d.txt",ListItemSlot[listitem]);
  112.            
  113.             if(dini_Exists(path))
  114.             {
  115.                 dini_Remove(path);
  116.                 SendClientMessage(playerid,COLOR_GREEN,"Erfolgreich gelöscht!");
  117.             }
  118.             else
  119.             {
  120.                 SendClientMessage(playerid,COLOR_RED,"FEHLER: Teleport wurde nicht gefunden.");
  121.             }
  122.         }
  123.         else if(dialogid == 1339)
  124.         {
  125.             if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid,COLOR_RED,"Du bist kein RCON-Admin!");
  126.             if(createdports == MAX_TELEPORTS-1) return SendClientMessage(playerid,COLOR_RED,"Das Limit wurde erreicht!");
  127.  
  128.             if(isnull(inputtext)) return SendClientMessage(playerid,COLOR_RED,"Du musst einen Namen eingeben!");
  129.             if(strlen(inputtext) > 32) return SendClientMessage(playerid,COLOR_RED,"Der Name ist zu lang!");
  130.  
  131.             new Float:x, Float:y, Float:z;
  132.             GetPlayerPos(playerid,x,y,z);
  133.             CreateTeleport(x,y,z,GetPlayerInterior(playerid),GetPlayerVirtualWorld(playerid),inputtext);
  134.             SendClientMessage(playerid,COLOR_GREEN,"Teleport erfolgreich erstellt! Tippe /teleports um die Teleportverwaltung aufzurufen.");
  135.         }
  136.     }
  137.     else if(!response)
  138.     {
  139.         if(dialogid == 1337 || dialogid == 1338 || dialogid == 1339)
  140.         {
  141.             ShowPlayerDialog(playerid,1336,DIALOG_STYLE_LIST,"Teleportverwaltung","{33AA33}Teleports anzeigen\n{33AA33}Teleports löschen\n{33AA33}Teleports erstellen","Okay!","Abbrechen");
  142.         }
  143.     }
  144.     return 1;
  145. }
  146.  
  147. stock CreateTeleport(Float:x,Float:y,Float:z,interior,world,name[])
  148. {
  149.     for(new i=0;i<MAX_TELEPORTS;i++)
  150.     {
  151.         new path[64];
  152.         format(path,64,"teleport_%d.txt",i);
  153.  
  154.         if(!dini_Exists(path))
  155.         {
  156.             dini_Create(path);
  157.             dini_FloatSet(path,"X",x);
  158.             dini_FloatSet(path,"Y",y);
  159.             dini_FloatSet(path,"Z",z);
  160.             dini_IntSet(path,"Interior",interior);
  161.             dini_IntSet(path,"World",world);
  162.             dini_Set(path,"Name",name);
  163.             createdports ++;
  164.             return 1;
  165.         }
  166.     }
  167.     return 1;
  168. }
  169.  
  170. stock TeleportExists(id)
  171. {
  172.     new path[64];
  173.     format(path,64,"teleport_%d.txt",id);
  174.  
  175.     if(!dini_Exists(path)) return 0;
  176.    
  177.     return 1;
  178. }
  179.  
  180. stock GetFreeListItemSlot()
  181. {
  182.     for(new i=0;i<MAX_TELEPORTS;i++)
  183.     {
  184.         if(ListItemSlot[i] == -1)
  185.         {
  186.             return i;
  187.         }
  188.     }
  189.     return -1;
  190. }
  191.  
  192. stock DeletePortOrder()
  193. {
  194.     for(new i=0;i<MAX_TELEPORTS;i++)
  195.     {
  196.         ListItemSlot[i] = -1;
  197.     }
  198.     return 1;
  199. }
  200.  
  201. stock OrderPorts()
  202. {
  203.     DeletePortOrder();
  204.    
  205.     for(new i=0;i<MAX_TELEPORTS;i++)
  206.     {
  207.         if(TeleportExists(i))
  208.         {
  209.             new slot = GetFreeListItemSlot();
  210.            
  211.             if(slot != -1)
  212.             {
  213.                 ListItemSlot[slot] = i;
  214.             }
  215.         }
  216.     }
  217.     return 1;
  218. }
  219.  
  220. COMMAND:teleports(playerid,params[])
  221. {
  222.     if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid,COLOR_RED,"Du bist kein RCON-Admin!");
  223.    
  224.     ShowPlayerDialog(playerid,1336,DIALOG_STYLE_LIST,"Teleportverwaltung","{33AA33}Teleports anzeigen\n{33AA33}Teleports löschen\n{33AA33}Teleports erstellen","Okay!","Abbrechen");
  225.     return 1;
  226. }
Advertisement
Add Comment
Please, Sign In to add comment