Advertisement
Guest User

Untitled

a guest
Feb 9th, 2013
388
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 6.99 KB | None | 0 0
  1. /*
  2.     t_navi by !TheO
  3.     (c) 2013
  4.     Schnelle einfache Ingame verwaltung des Navigationssystem.
  5. */
  6.  
  7. #include <a_samp>
  8. #include <a_mysql>
  9. #include <sscanf2>
  10. #include <zcmd>
  11.  
  12. //Mysql
  13. #define m_Host "localhost"
  14. #define m_User "root"
  15. #define m_Pass ""
  16. #define m_Data "samp"
  17.  
  18.  
  19. #define dialog_navi (222)
  20. #define dialog_navi_edit (333)
  21. #define dialog_add_navi (444)
  22. #define dialog_edit_navi (555)
  23. #define dialog_navi_del (666)
  24. #define dialog_edit_navi2 (777)
  25.  
  26.  
  27. #define rot 0xFF6347FF
  28. #define gruen 0x33AA33FF
  29.  
  30.  
  31. #define MAX_NAVI_POINTS 50
  32. enum Navienum
  33. {
  34.     nName[64],
  35.     Float:nx,
  36.     Float:ny,
  37.     Float:nz
  38. };
  39.  
  40. new
  41.     navi[MAX_NAVI_POINTS][Navienum],
  42.     navieditname[64],
  43.     navistartet[MAX_PLAYERS];
  44.  
  45.  
  46.  
  47.  
  48. public OnFilterScriptInit()
  49. {
  50.     print("\n--------------------------------------");
  51.     print(" t_Navi ist geladen!");
  52.     print("--------------------------------------\n");
  53.     mysql_connect(m_Host,m_User,m_Data,m_Pass);
  54.     if(!mysql_ping())
  55.     {
  56.         print("MYSQL: Es konnte keine Verbindung zum MYSQL Server hergestellt werden!");
  57.     }
  58.     else
  59.     {
  60.         mysql_query("CREATE TABLE IF NOT EXISTS `Navi` (\
  61.           `ID` int(11) NOT NULL AUTO_INCREMENT,\
  62.           `Name` varchar(64) NOT NULL,\
  63.           `x` float NOT NULL,\
  64.           `y` float NOT NULL,\
  65.           `z` float NOT NULL,\
  66.           PRIMARY KEY (`ID`));");
  67.         for(new i = 0; i < MAX_NAVI_POINTS;i++)
  68.         {
  69.             LoadNavi(i);
  70.         }
  71.     }
  72.     return 1;
  73. }
  74.  
  75. public OnFilterScriptExit()
  76. {
  77.     mysql_close();
  78.     return 1;
  79. }
  80.  
  81.  
  82.  
  83. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  84. {
  85.     switch(dialogid)
  86.     {
  87.         case dialog_navi:
  88.         {
  89.             if(response)
  90.             {
  91.                 if(navistartet[playerid] == 0)
  92.                 {
  93.                     new i = listitem+1,string[90];
  94.                     SetPlayerCheckpoint(playerid,navi[i][nx],navi[i][ny],navi[i][nz],4);
  95.                     format(string,90,"Ziel gesetzt: %s",navi[i][nName]);
  96.                     SendClientMessage(playerid, gruen, string);
  97.                     navistartet[playerid] = 1;
  98.                 }
  99.                 else
  100.                 {
  101.                     SendClientMessage(playerid,rot,"Du hast ein eingegebens Ziel bitte fahre dort hin oder lösche es (/delmarker)");
  102.                 }
  103.             }
  104.             return 1;
  105.         }
  106.         case dialog_navi_edit:
  107.         {
  108.             if(IsPlayerAdmin(playerid))
  109.             {
  110.                 if(response)
  111.                 {
  112.                     switch(listitem)
  113.                     {
  114.                         case 0:
  115.                         {
  116.                             ShowPlayerDialog(playerid,dialog_add_navi,DIALOG_STYLE_INPUT,"Navi | Hinzufügen","Bitte gebe den Namen dieses Punktes an!","Erstellen","Exit");
  117.                         }
  118.                         case 1:
  119.                         {
  120.                             ShowPlayerDialog(playerid,dialog_navi_del,DIALOG_STYLE_INPUT,"Navi | Löschen","Bitte gebe den Namen ein des Punktes den du Löschen willst (Vollständig)","Löschen","Exit");
  121.                         }
  122.                         case 2:
  123.                         {
  124.                             ShowPlayerDialog(playerid,dialog_edit_navi,DIALOG_STYLE_INPUT,"Navi | Umbennen","Bitte gebe den Namen ein des Punktes den du Umbennen willst (Vollständig)","Weiter","Exit");
  125.                         }
  126.                     }
  127.                 }
  128.             }
  129.             return 1;
  130.         }
  131.         case dialog_add_navi:
  132.         {
  133.             if(IsPlayerAdmin(playerid))
  134.             {
  135.                 if(response)
  136.                 {
  137.                     new Float:x,Float:y,Float:z,string[128];
  138.                     GetPlayerPos(playerid,x,y,z);
  139.                     format(string, 128,"Navipunkt: %s hinzugefügt!",inputtext);
  140.                     SendClientMessage(playerid,gruen,string);
  141.                     CreateNaviPoint(inputtext,x,y,z);
  142.                 }
  143.                 else
  144.                 {
  145.                     SendClientMessage(playerid,rot,"Abgebrochen!");
  146.                 }
  147.             }
  148.             return 1;
  149.         }
  150.         case dialog_navi_del:
  151.         {
  152.             if(IsPlayerAdmin(playerid))
  153.             {
  154.                 if(response)
  155.                 {
  156.                     new query[128];
  157.                     format(query,128,"SELECT FROM * `Navi` WHERE `Name` = '%s'",inputtext);
  158.                     mysql_query(query);
  159.                     mysql_store_result();
  160.                     if(mysql_num_rows() == 0)
  161.                     {
  162.                         SendClientMessage(playerid,rot,"Diesen Navi Punkt gibt es nicht in der Datenbank");
  163.                     }
  164.                     else
  165.                     {
  166.                         format(query,128,"DELETE FROM `Navi` WHERE `Name` = '%s'",inputtext);
  167.                         mysql_query(query);
  168.                         format(query,128,"Navipunkt: %s gelöscht!",inputtext);
  169.                         SendClientMessage(playerid,gruen,query);
  170.                         for(new i = 0; i < MAX_NAVI_POINTS; i++)
  171.                         {
  172.                             LoadNavi(i);
  173.                         }
  174.                     }
  175.                 }
  176.                 else
  177.                 {
  178.                     SendClientMessage(playerid,rot,"Abgebrochen!");
  179.                 }
  180.             }
  181.             return 1;
  182.         }
  183.         case dialog_edit_navi:
  184.         {
  185.             if(IsPlayerAdmin(playerid))
  186.             {
  187.                 if(response)
  188.                 {
  189.                     new string[128];
  190.                     format(string,128,"Navipunkt: %s Änderung wird Vorbereitet",inputtext);
  191.                     SendClientMessage(playerid,gruen,string);
  192.                     format(navieditname,64,"%s",inputtext);
  193.                     ShowPlayerDialog(playerid,dialog_edit_navi2,DIALOG_STYLE_INPUT,"Navi | Umbennen","Gebe nun den Namen ein den du für diesen Punkt haben willst","Ändern","Exit");
  194.                 }
  195.                 else
  196.                 {
  197.                     SendClientMessage(playerid,rot,"Abgebrochen!");
  198.                 }
  199.             }
  200.             return 1;
  201.         }
  202.         case dialog_edit_navi2:
  203.         {
  204.             if(IsPlayerAdmin(playerid))
  205.             {
  206.                 if(response)
  207.                 {
  208.                     new query[128];
  209.                     format(query,128,"Navipunkt: %s zu %s Umbenannt!",navieditname,inputtext);
  210.                     SendClientMessage(playerid,gruen,query);
  211.                     format(query,128,"UPDATE `Navi` SET `Name` = '%s' WHERE `Name` = '%s'",inputtext,navieditname);
  212.                     mysql_query(query);
  213.                     for(new i = 0; i < MAX_NAVI_POINTS; i++)
  214.                     {
  215.                         LoadNavi(i);
  216.                     }
  217.  
  218.                 }
  219.                 else
  220.                 {
  221.                     SendClientMessage(playerid,rot,"Abgebrochen!");
  222.                 }
  223.             }
  224.             return 1;
  225.         }
  226.     }
  227.     return 1;
  228. }
  229.  
  230. public OnPlayerEnterCheckpoint(playerid)
  231. {
  232.     if(navistartet[playerid] == 1)
  233.     {
  234.         PlayerPlaySound(playerid,1149,0.0,0.0,0.0);
  235.         SendClientMessage(playerid,gruen,"Ziel erreicht!");
  236.         DisablePlayerCheckpoint(playerid);
  237.         navistartet[playerid] = 0;
  238.         return 1;
  239.     }
  240.     return 1;
  241. }
  242.  
  243.  
  244. CMD:editnavi(playerid,params[])
  245. {
  246.     if(IsPlayerAdmin(playerid))
  247.     {
  248.         ShowPlayerDialog(playerid,dialog_navi_edit,DIALOG_STYLE_LIST,"Navi | Bearbeitung","Neuen Navi Punkt Hinzufügen\nNavi Punkt Löschen\nNavi Punkt umbennen","Weiter","Exit");
  249.     }
  250.     return 1;
  251. }
  252.  
  253. CMD:navi(playerid,params[])
  254. {
  255.     new string[256];
  256.     for(new x = 0;x < MAX_NAVI_POINTS;x++)
  257.     {
  258.         format(string, 200, "%s%s\n", string,navi[x][nName]);
  259.     }
  260.     ShowPlayerDialog(playerid,dialog_navi,DIALOG_STYLE_LIST,"Navigation",string,"Suchen","Exit");
  261.     return 1;
  262. }
  263.  
  264.  
  265. CMD:delmarker(playerid,params[])
  266. {
  267.     if(navistartet[playerid] == 1)
  268.     {
  269.         navistartet[playerid] = 0;
  270.         DisablePlayerCheckpoint(playerid);
  271.     }
  272.     return 1;
  273. }
  274.  
  275. stock CreateNaviPoint(pointname[],Float:pointx,Float:pointy,Float:pointz)
  276. {
  277.     new query[128];
  278.     mysql_real_escape_string(pointname,pointname);
  279.     format(query,128,"INSERT INTO `Navi` (`Name`,`x`,`y`,`z`)VALUES('%s','%f','%f','%f')",\
  280.     pointname,Float:pointx,Float:pointy,Float:pointz);
  281.     mysql_query(query);
  282.     for(new i = 0; i < MAX_NAVI_POINTS; i++)
  283.     {
  284.         LoadNavi(i);
  285.     }
  286.     mysql_free_result();
  287.     return 1;
  288. }
  289.  
  290.  
  291.  
  292.  
  293. stock LoadNavi(id)
  294. {
  295.     new query[128],str[512];
  296.     format(query,128,"SELECT * FROM `Navi` WHERE `ID` = '%d'",id);
  297.     mysql_query(query);
  298.     mysql_store_result();
  299.     while(mysql_fetch_row(str))
  300.     {
  301.         sscanf(str, "p<|>{i}s[64]fff",navi[id][nName],navi[id][nx],navi[id][ny],navi[id][nz]);
  302.     }
  303.     mysql_free_result();
  304.     return 1;
  305. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement