Facebook
From Silver, 4 Years ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 341
  1.  
  2.          /*••••••••••••••••••••••••••••••••••••••••••
  3.                           Kodlayan: Silver
  4.                      Kodlama Tarihi: 28.05.2019
  5.           Sistem Tanımı: Gelişmiş Dinamik Kapı/Gate
  6.          ••••••••••••••••••••••••••••••••••••••••••*/
  7.  
  8. #include        <a_samp>
  9. #include    <a_mysql>
  10. #include    <sscanf2>
  11. #include    <foreach>
  12. #include    <streamer>
  13. #include    <zcmd>
  14.  
  15. #define         MYSQL_HOST                                      "localhost"
  16. #define         MYSQL_KULLANICI                                 "root"
  17. #define         MYSQL_SIFRE                                     ""
  18. #define         MYSQL_DATABASE                                  "silver"
  19.  
  20. #define     MAX_GATE                        (100)
  21. #define         func%0(%1) forward%0(%1);               public%0(%1)
  22.  
  23.                                             // "true" sadece rcon'a gate id bilgisini açar.
  24.                                                                                         //"false" oyunculara gate id bilgisini açar.
  25. #define     GATE_BILGISI                    (true)
  26. #define     GATE_DIALOG                     (9990)
  27. #define     GATE_DIALOG_X                   (9991)
  28.  
  29.  
  30. new MySQL: g_SQL;
  31. new Iterator: Gateler<MAX_GATE>;
  32. new GateAraTimer[MAX_PLAYERS], renkDeger[MAX_PLAYERS];
  33. new PlayerText:GateTextdraw[MAX_PLAYERS];
  34. new GateDuzenliyorum[MAX_PLAYERS];
  35. enum tdRenk{hexKod[7]};
  36. new TextdrawRenkleri[][tdRenk] = {{"8CF292"},{"9BE3E1"},{"ACD2AE"},{"D0F18D"},{"FED681"},{"E8A797"}};
  37.  
  38. enum gData
  39. {
  40.         gateObje,
  41.         gateObjeModel,
  42.         gateInterior,
  43.         gateVirtual,
  44.         Float:gateAcikPos[6],
  45.         Float:gateKapaliPos[6],
  46.         gateSifre[256],
  47.         Float:gateHiz,
  48.         Float:gateUzaklik,
  49.         bool:gateDurum,
  50. };
  51. new gateData[MAX_GATE][gData];
  52.  
  53. public OnFilterScriptInit()
  54. {
  55.         new MySQLOpt: option_id = mysql_init_options();
  56.         mysql_set_option(option_id, AUTO_RECONNECT, true);
  57.         g_SQL = mysql_connect(MYSQL_HOST, MYSQL_KULLANICI, MYSQL_SIFRE, MYSQL_DATABASE, option_id);
  58.         if (g_SQL == MYSQL_INVALID_HANDLE || mysql_errno(g_SQL) != 0) return print("» Silver: Gate sistemine ait veritabanı bağlantısı kurulamadı."),SendRconCommand("exit");
  59.         printf("» Silver: Gate sistemine ait veritabanı bağlantısı kuruldu. (%s)", MYSQL_HOST);
  60.         mysql_tquery(g_SQL, "SELECT * FROM `gateler`", "GateYukle");
  61.         return 1;
  62. }
  63.  
  64. public OnFilterScriptExit()
  65. {
  66.         foreach(new i : Gateler)
  67.         {
  68.                 DestroyDynamicObject(gateData[i][gateObje]);
  69.         gateData[i][gateObjeModel] = 0;
  70.         gateData[i][gateObje] = INVALID_OBJECT_ID;
  71.                 format(gateData[i][gateSifre], 32, "-");
  72.             gateData[i][gateHiz] = 0.0;
  73.             gateData[i][gateUzaklik] = 0.0;
  74.             gateData[i][gateDurum] = false;
  75.             gateData[i][gateInterior] = 0;
  76.             gateData[i][gateVirtual] = 0;
  77.             for(new xd ; xd < 6 ; xd ++)
  78.             {
  79.                 gateData[i][gateAcikPos][xd] = 0.0;
  80.                 gateData[i][gateKapaliPos][xd] = 0.0;
  81.             }
  82.         }
  83.         return printf("» Silver: Dinamik gate sistemi sonlandırıldı."), 1;
  84. }
  85.  
  86. public OnPlayerConnect(playerid)
  87. {
  88.         GateTextdraw[playerid] = CreatePlayerTextDraw(playerid, 122.000000, 370.000000, "");
  89.         PlayerTextDrawFont(playerid, GateTextdraw[playerid], 2);
  90.         PlayerTextDrawLetterSize(playerid, GateTextdraw[playerid], 0.233333, 1.300000);
  91.         PlayerTextDrawTextSize(playerid, GateTextdraw[playerid], 731.000000, 57.000000);
  92.         PlayerTextDrawSetOutline(playerid, GateTextdraw[playerid], 1);
  93.         PlayerTextDrawSetShadow(playerid, GateTextdraw[playerid], 0);
  94.         PlayerTextDrawAlignment(playerid, GateTextdraw[playerid], 1);
  95.         PlayerTextDrawColor(playerid, GateTextdraw[playerid], -1);
  96.         PlayerTextDrawBackgroundColor(playerid, GateTextdraw[playerid], 255);
  97.         PlayerTextDrawBoxColor(playerid, GateTextdraw[playerid], 50);
  98.         PlayerTextDrawUseBox(playerid, GateTextdraw[playerid], 0);
  99.         PlayerTextDrawSetProportional(playerid, GateTextdraw[playerid], 1);
  100.         PlayerTextDrawSetSelectable(playerid, GateTextdraw[playerid], 0);
  101.  
  102.     renkDeger[playerid] = 0; GateDuzenliyorum[playerid] = 0;
  103.     GateAraTimer[playerid] = SetTimerEx("GateArama", 700, true, "d", playerid);
  104.         return 1;
  105. }
  106.  
  107. public OnPlayerDisconnect(playerid, reason)
  108. {
  109.     KillTimer(GateAraTimer[playerid]);
  110.         return 1;
  111. }
  112.  
  113. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  114. {
  115.         switch(dialogid)
  116.         {
  117.             case GATE_DIALOG:
  118.             {
  119.                 if(response)
  120.                 {
  121.                                 new id = GetPVarInt(playerid, "GateDuzenleID");
  122.                                 SetPVarInt(playerid, "GateIslemID", listitem);
  123.                                 switch(listitem)
  124.                                 {
  125.                         case 0:{GateDuzenliyorum[playerid] = 1; EditDynamicObject(playerid, gateData[id][gateObje]);}
  126.                         case 1:{GateDuzenliyorum[playerid] = 2; EditDynamicObject(playerid, gateData[id][gateObje]);}
  127.                        
  128.                         case 3:{ShowPlayerDialog(playerid, GATE_DIALOG_X, DIALOG_STYLE_INPUT, "{FFFFFF}Kapı Hızı","{FFFFFF}Kapı hızını değiştirmek için aşağıya değer giriniz.","Onayla","Kapat");}
  129.                         case 4:{ShowPlayerDialog(playerid, GATE_DIALOG_X, DIALOG_STYLE_INPUT, "{FFFFFF}Erişim Uzaklığı","{FFFFFF}Kapıy erişim parametresini değiştirmek için aşağıya değer giriniz.","Onayla","Kapat");}
  130.  
  131.                         case 5:{ShowPlayerDialog(playerid, GATE_DIALOG_X, DIALOG_STYLE_INPUT, "{FFFFFF}Kapı Şifresi","{FFFFFF}Kapı şifresini kutucuğa giriniz, silmek için {E6D799}boş{FFFFFF} bırakıp onaylayın.","Onayla","Kapat");}
  132.  
  133.                         case 6:{ShowPlayerDialog(playerid, GATE_DIALOG_X, DIALOG_STYLE_INPUT, "{FFFFFF}Virtual Değeri","{FFFFFF}Kapıya ait virtual değerini kutucuğa girip onayla tuşuna basın.","Onayla","Kapat");}
  134.                         case 7:{ShowPlayerDialog(playerid, GATE_DIALOG_X, DIALOG_STYLE_INPUT, "{FFFFFF}Interior Değeri","{FFFFFF}Kapıya ait interior değerini kutucuğa girip onayla tuşuna basın.","Onayla","Kapat");}
  135.                         case 8:{ShowPlayerDialog(playerid, GATE_DIALOG_X, DIALOG_STYLE_INPUT, "{FFFFFF}Obje Modeli","{FFFFFF}Kapı modelini kutucuğa girip onayla tuşuna basın.","Onayla","Kapat");}
  136.  
  137.                                         case 10:
  138.                                         {
  139.                                                 if(gateData[id][gateAcikPos][0] == gateData[id][gateKapaliPos][0] && gateData[id][gateAcikPos][1] == gateData[id][gateKapaliPos][1] && gateData[id][gateAcikPos][2] == gateData[id][gateKapaliPos][2]) return SendClientMessage(playerid, -1, "{EC6C6C}<!>{FFFFFF} Bu kapı henüz ayarlanmamış.");
  140.                                                 if(gateData[id][gateHiz] == 0) return SendClientMessage(playerid, -1, "{EC6C6C}<!>{FFFFFF} Bu kapının hızı ayarlı değil.");
  141.                                                 if(gateData[id][gateDurum] == true)
  142.                                                 {
  143.                                                     MoveDynamicObject(gateData[id][gateObje], gateData[id][gateKapaliPos][0], gateData[id][gateKapaliPos][1], gateData[id][gateKapaliPos][2], gateData[id][gateHiz], gateData[id][gateKapaliPos][3], gateData[id][gateKapaliPos][4], gateData[id][gateKapaliPos][5]);
  144.                                                     gateData[id][gateDurum] = false;
  145.                                                 }
  146.                                                 else
  147.                                                 {
  148.                                                     MoveDynamicObject(gateData[id][gateObje], gateData[id][gateAcikPos][0], gateData[id][gateAcikPos][1], gateData[id][gateAcikPos][2], gateData[id][gateHiz], gateData[id][gateAcikPos][3], gateData[id][gateAcikPos][4], gateData[id][gateAcikPos][5]);
  149.                                                     gateData[id][gateDurum] = true;
  150.                                                 }
  151.                                                 GateDuzenleMenu(playerid);
  152.                                         }
  153.                                         case 11:
  154.                                         {
  155.                                             SetPlayerPos(playerid,gateData[id][gateKapaliPos][0], gateData[id][gateKapaliPos][1] + 0.5, gateData[id][gateKapaliPos][2] + 2.1);
  156.                                             SetPlayerVirtualWorld(playerid,gateData[id][gateVirtual]); SetPlayerInterior(playerid,gateData[id][gateInterior]);
  157.                                         }
  158.                                         default:GateDuzenleMenu(playerid);
  159.                                 }
  160.                 }
  161.             }
  162.             case GATE_DIALOG_X:
  163.             {
  164.                 if(response)
  165.                 {
  166.                     new x = GetPVarInt(playerid, "GateIslemID"),
  167.                                         id = GetPVarInt(playerid, "GateDuzenleID");
  168.                     switch(x)
  169.                     {
  170.                                     case 3:gateData[id][gateHiz] = floatstr(inputtext);
  171.                                     case 4:gateData[id][gateUzaklik] = floatstr(inputtext);
  172.                                     case 5:
  173.                                     {
  174.                                     if(strlen(inputtext) <= 0)
  175.                                     {
  176.                                         format(gateData[id][gateSifre], 32, "-");
  177.                                                 }
  178.                                                 else format(gateData[id][gateSifre], 32, inputtext);
  179.                                     }
  180.                                     case 6:
  181.                                     {
  182.                                         gateData[id][gateVirtual] = strval(inputtext);
  183.                                         if(IsValidDynamicObject(gateData[id][gateObje])){DestroyDynamicObject(gateData[id][gateObje]);}
  184.                                         gateData[id][gateDurum] = false;
  185.                                             gateData[id][gateObje] = CreateDynamicObject(gateData[id][gateObjeModel], gateData[id][gateKapaliPos][0],\
  186.                                                 gateData[id][gateKapaliPos][1], gateData[id][gateKapaliPos][2], gateData[id][gateKapaliPos][3],\
  187.                                                 gateData[id][gateKapaliPos][4], gateData[id][gateKapaliPos][5], gateData[id][gateVirtual], gateData[id][gateInterior]);
  188.                                     }
  189.                                     case 7:
  190.                                     {
  191.                             gateData[id][gateInterior] = strval(inputtext);
  192.                                         if(IsValidDynamicObject(gateData[id][gateObje])){DestroyDynamicObject(gateData[id][gateObje]);}
  193.                                         gateData[id][gateDurum] = false;
  194.                                             gateData[id][gateObje] = CreateDynamicObject(gateData[id][gateObjeModel], gateData[id][gateKapaliPos][0],\
  195.                                                 gateData[id][gateKapaliPos][1], gateData[id][gateKapaliPos][2], gateData[id][gateKapaliPos][3],\
  196.                                                 gateData[id][gateKapaliPos][4], gateData[id][gateKapaliPos][5], gateData[id][gateVirtual], gateData[id][gateInterior]);
  197.                                     }
  198.                                     case 8:
  199.                                     {
  200.                             gateData[id][gateObjeModel] = strval(inputtext);
  201.                                         if(IsValidDynamicObject(gateData[id][gateObje])){DestroyDynamicObject(gateData[id][gateObje]);}
  202.                                             gateData[id][gateObje] = CreateDynamicObject(gateData[id][gateObjeModel], gateData[id][gateKapaliPos][0],\
  203.                                                 gateData[id][gateKapaliPos][1], gateData[id][gateKapaliPos][2], gateData[id][gateKapaliPos][3],\
  204.                                                 gateData[id][gateKapaliPos][4], gateData[id][gateKapaliPos][5], gateData[id][gateVirtual], gateData[id][gateInterior]);
  205.                                     }
  206.                     }
  207.                     GateDuzenleMenu(playerid);
  208.                 }
  209.             }
  210.         }
  211.         return 1;
  212. }
  213.  
  214. public OnPlayerEditDynamicObject(playerid, objectid, response, Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz)
  215. {
  216.         switch(GateDuzenliyorum[playerid])
  217.         {
  218.             case 1:
  219.             {
  220.                 new id = GetPVarInt(playerid, "GateDuzenleID");
  221.                         switch(response)
  222.                         {
  223.                             case EDIT_RESPONSE_CANCEL:
  224.                             {
  225.                                         GateDuzenliyorum[playerid] = 0;
  226.                             }
  227.                                 case EDIT_RESPONSE_FINAL:
  228.                                 {
  229.                                 GateDuzenliyorum[playerid] = 0;
  230.                                 gateData[id][gateDurum] = true;
  231.                                 gateData[id][gateAcikPos][0] = x;gateData[id][gateAcikPos][1] = y;gateData[id][gateAcikPos][2] = z;
  232.                                 gateData[id][gateAcikPos][3] = rx;gateData[id][gateAcikPos][4] = ry;gateData[id][gateAcikPos][5] = rz;
  233.                                 GateDuzenleMenu(playerid); GateKaydet(id);
  234.                                 }
  235.                         }
  236.                 }
  237.             case 2:
  238.             {
  239.                 new id = GetPVarInt(playerid, "GateDuzenleID");
  240.                         switch(response)
  241.                         {
  242.                             case EDIT_RESPONSE_CANCEL:
  243.                             {
  244.                                         GateDuzenliyorum[playerid] = 0;
  245.                             }
  246.                                 case EDIT_RESPONSE_FINAL:
  247.                                 {
  248.                                 GateDuzenliyorum[playerid] = 0;
  249.                                 gateData[id][gateDurum] = false;
  250.                                 gateData[id][gateKapaliPos][0] = x;gateData[id][gateKapaliPos][1] = y;gateData[id][gateKapaliPos][2] = z;
  251.                                 gateData[id][gateKapaliPos][3] = rx;gateData[id][gateKapaliPos][4] = ry;gateData[id][gateKapaliPos][5] = rz;
  252.                                         GateDuzenleMenu(playerid); GateKaydet(id);
  253.                                 }
  254.                         }
  255.                 }
  256.         }
  257.         return 1;
  258. }
  259.  
  260. func GateArama(playerid)
  261. {
  262.         new id = GateBul(playerid, true, 2.0), str[256], hexstr[12], hexkodu;
  263.         if(id != -1)
  264.         {
  265.                 #if GATE_BILGISI true
  266.                         if(!IsPlayerAdmin(playerid)) return true;
  267.                 #endif
  268.                 if(renkDeger[playerid]==sizeof(TextdrawRenkleri)-1)
  269.                 {
  270.                     renkDeger[playerid]=0;
  271.                 }
  272.                 else renkDeger[playerid]++;
  273.             PlayerTextDrawHide(playerid, GateTextdraw[playerid]);
  274.                 format(hexstr, sizeof(hexstr), "0x%sFF", TextdrawRenkleri[renkDeger[playerid]][hexKod]); sscanf(hexstr, "x", hexkodu);
  275.                 PlayerTextDrawColor(playerid, GateTextdraw[playerid], hexkodu);
  276.             format(str, sizeof(str), "Gate ID: ~w~%d", id);
  277.             PlayerTextDrawSetString(playerid, GateTextdraw[playerid], str);
  278.             PlayerTextDrawShow(playerid, GateTextdraw[playerid]);
  279.         }
  280.         else PlayerTextDrawHide(playerid, GateTextdraw[playerid]);
  281.         str[0] = 0;
  282.         return 1;
  283. }
  284.  
  285. func GateYukle()
  286. {
  287.         new rows;
  288.         cache_get_row_count(rows);
  289.         if(rows)
  290.         {
  291.                 new id, cekilen, string[512];
  292.                 while(cekilen < rows)
  293.                 {
  294.                     cache_get_value_name_int(cekilen, "id", id);
  295.                     cache_get_value_name_int(cekilen, "obje", gateData[id][gateObjeModel]);
  296.                     cache_get_value_name_int(cekilen, "interior", gateData[id][gateInterior]);
  297.                     cache_get_value_name_int(cekilen, "vw", gateData[id][gateVirtual]);
  298.                     cache_get_value_name_float(cekilen, "hiz", gateData[id][gateHiz]);
  299.                     cache_get_value_name_float(cekilen, "uzaklik", gateData[id][gateUzaklik]);
  300.                     cache_get_value_name(cekilen, "acikpos", string, sizeof(string));
  301.                     sscanf(string, "p<|>ffffff", gateData[id][gateAcikPos][0], gateData[id][gateAcikPos][1], gateData[id][gateAcikPos][2], gateData[id][gateAcikPos][3], gateData[id][gateAcikPos][4], gateData[id][gateAcikPos][5]);
  302.                     cache_get_value_name(cekilen, "kapalipos", string, sizeof(string));
  303.                     sscanf(string, "p<|>ffffff", gateData[id][gateKapaliPos][0], gateData[id][gateKapaliPos][1], gateData[id][gateKapaliPos][2], gateData[id][gateKapaliPos][3], gateData[id][gateKapaliPos][4], gateData[id][gateKapaliPos][5]);
  304.             cache_get_value_name(cekilen, "sifre", gateData[id][gateSifre]);
  305.             gateData[id][gateObje] = CreateDynamicObject(gateData[id][gateObjeModel], gateData[id][gateKapaliPos][0], gateData[id][gateKapaliPos][1], gateData[id][gateKapaliPos][2], gateData[id][gateKapaliPos][3], gateData[id][gateKapaliPos][4], gateData[id][gateKapaliPos][5], gateData[id][gateVirtual], gateData[id][gateInterior]);
  306.             gateData[id][gateDurum] = false;
  307.                         Iter_Add(Gateler, id);
  308.                     cekilen++;
  309.                 }
  310.                 printf("» Silver: Dinamik %d gate yüklendi.", cekilen);
  311.         }
  312.         else printf("» Silver: Yüklenebilir dinamik gate bulunamadı.");
  313.         return 1;
  314. }
  315.  
  316. stock GateBul(playerid, bool:deger = false, Float:Yakinlik = 7.0)
  317. {
  318.         switch(deger)
  319.         {
  320.             case false:
  321.             {
  322.                         foreach(new g: Gateler)
  323.                         {
  324.                             if(IsPlayerInRangeOfPoint(playerid, gateData[g][gateUzaklik], gateData[g][gateAcikPos][0], gateData[g][gateAcikPos][1], gateData[g][gateAcikPos][2])) return g;
  325.                         }
  326.                 }
  327.                 case true:
  328.             {
  329.                         foreach(new g: Gateler)
  330.                         {
  331.                             if(IsPlayerInRangeOfPoint(playerid, Yakinlik, gateData[g][gateAcikPos][0], gateData[g][gateAcikPos][1], gateData[g][gateAcikPos][2])) return g;
  332.                         }
  333.                 }
  334.         }
  335.         return -1;
  336. }
  337.  
  338. stock GetXYInFrontOfPlayer(playerid, &Float:x, &Float:y, Float:distance)
  339. {
  340.         new Float: a;
  341.         GetPlayerPos(playerid, x, y, a);
  342.         GetPlayerFacingAngle(playerid, a);
  343.         if (GetPlayerVehicleID(playerid)) GetVehicleZAngle(GetPlayerVehicleID(playerid), a);
  344.         x += (distance * floatsin(-a, degrees)), y += (distance * floatcos(-a, degrees));
  345. }
  346.  
  347. stock GateOlustur(playerid, id, model)
  348. {
  349.         new query[128 * 2]; gateData[id][gateDurum] = false;
  350.     gateData[id][gateHiz] = 5.0;gateData[id][gateUzaklik] = 5.0;
  351.     gateData[id][gateObjeModel] = model; format(gateData[id][gateSifre], 32, "-");
  352.     gateData[id][gateVirtual] = GetPlayerVirtualWorld(playerid); gateData[id][gateInterior] = GetPlayerInterior(playerid);
  353.         GetPlayerPos(playerid, gateData[id][gateAcikPos][0], gateData[id][gateAcikPos][1], gateData[id][gateAcikPos][2]);
  354.         GetPlayerFacingAngle(playerid, gateData[id][gateAcikPos][5]); gateData[id][gateAcikPos][3]=0.0;gateData[id][gateAcikPos][4]=0.0;
  355.     GetXYInFrontOfPlayer(playerid, gateData[id][gateAcikPos][0], gateData[id][gateAcikPos][1], 3.0);
  356.     for(new i;i<6;i++){gateData[id][gateKapaliPos][i] = gateData[id][gateAcikPos][i];}
  357.     gateData[id][gateObje] = CreateDynamicObject(gateData[id][gateObjeModel], gateData[id][gateKapaliPos][0],\
  358.         gateData[id][gateKapaliPos][1], gateData[id][gateKapaliPos][2], gateData[id][gateKapaliPos][3],\
  359.         gateData[id][gateKapaliPos][4], gateData[id][gateKapaliPos][5], gateData[id][gateVirtual], gateData[id][gateInterior]);
  360.         mysql_format(g_SQL, query, sizeof(query),"INSERT INTO `gateler` (`id`) VALUES ('%d')", id);
  361.         mysql_tquery(g_SQL, query); Iter_Add(Gateler, id);
  362.         GateKaydet(id);
  363.         return 1;
  364. }
  365.  
  366. stock GateKaydet(id)
  367. {
  368.         new query[256 * 3], acpos[256], kapos[256];
  369.         format(acpos, sizeof(acpos), "%.1f|%.1f|%.1f|%.1f|%.1f|%.1f", gateData[id][gateAcikPos][0], gateData[id][gateAcikPos][1], gateData[id][gateAcikPos][2], gateData[id][gateAcikPos][3], gateData[id][gateAcikPos][4], gateData[id][gateAcikPos][5]);
  370.         format(kapos, sizeof(kapos), "%.1f|%.1f|%.1f|%.1f|%.1f|%.1f", gateData[id][gateKapaliPos][0], gateData[id][gateKapaliPos][1], gateData[id][gateKapaliPos][2], gateData[id][gateKapaliPos][3], gateData[id][gateKapaliPos][4], gateData[id][gateKapaliPos][5]);
  371.         mysql_format(g_SQL, query, sizeof(query), "UPDATE `gateler` SET `obje` = '%d' WHERE `id` = '%d' LIMIT 1", gateData[id][gateObjeModel], id);
  372.         mysql_tquery(g_SQL, query);
  373.         mysql_format(g_SQL, query, sizeof(query), "UPDATE `gateler` SET `interior` = '%d',`vw` = '%d' WHERE `id` = '%d' LIMIT 1", gateData[id][gateInterior], gateData[id][gateVirtual], id);
  374.         mysql_tquery(g_SQL, query);
  375.         mysql_format(g_SQL, query, sizeof(query), "UPDATE `gateler` SET `acikpos` = '%s' WHERE `id` = '%d' LIMIT 1", acpos, id);
  376.         mysql_tquery(g_SQL, query);
  377.         mysql_format(g_SQL, query, sizeof(query), "UPDATE `gateler` SET `kapalipos` = '%s' WHERE `id` = '%d' LIMIT 1", kapos, id);
  378.         mysql_tquery(g_SQL, query);
  379.         mysql_format(g_SQL, query, sizeof(query), "UPDATE `gateler` SET `hiz` = '%.1f' WHERE `id` = '%d' LIMIT 1", gateData[id][gateHiz], id);
  380.         mysql_tquery(g_SQL, query);
  381.         mysql_format(g_SQL, query, sizeof(query), "UPDATE `gateler` SET `uzaklik` = '%.1f' WHERE `id` = '%d' LIMIT 1", gateData[id][gateUzaklik], id);
  382.         mysql_tquery(g_SQL, query);
  383.         mysql_format(g_SQL, query, sizeof(query), "UPDATE `gateler` SET `sifre` = '%s' WHERE `id` = '%d' LIMIT 1", gateData[id][gateSifre], id);
  384.         mysql_tquery(g_SQL, query);
  385.         return 1;
  386. }
  387.  
  388. stock GateSil(id)
  389. {
  390.         DestroyDynamicObject(gateData[id][gateObje]); gateData[id][gateObjeModel] = 0; gateData[id][gateVirtual] = 0;
  391.     gateData[id][gateObje] = INVALID_OBJECT_ID; format(gateData[id][gateSifre], 32, "-"); gateData[id][gateHiz] = 0.0;
  392.         gateData[id][gateUzaklik] = 0.0; gateData[id][gateDurum] = false; gateData[id][gateInterior] = 0;
  393.     for(new xd ; xd < 6 ; xd ++)
  394.     {
  395.         gateData[id][gateAcikPos][xd] = 0.0;
  396.         gateData[id][gateKapaliPos][xd] = 0.0;
  397.     }
  398.     Iter_Remove(Gateler, id);
  399.         return 1;
  400. }
  401.  
  402. stock GateDuzenleMenu(playerid)
  403. {
  404.     new str[1024], baslik[256], id = GetPVarInt(playerid, "GateDuzenleID"), acpos[256], kapos[256];
  405.         format(acpos, sizeof(acpos), "%.1f, %.1f, %.1f", gateData[id][gateAcikPos][0], gateData[id][gateAcikPos][1], gateData[id][gateAcikPos][2]);
  406.         format(kapos, sizeof(kapos), "%.1f, %.1f, %.1f", gateData[id][gateKapaliPos][0], gateData[id][gateKapaliPos][1], gateData[id][gateKapaliPos][2]);
  407.  
  408.         format(baslik, sizeof(baslik), "{FFFFFF}Gate Duzenle #%d", id);
  409.         strcat(str, "{FFFFFF}Işlev\t{FFFFFF}#\n");
  410.  
  411.         if(renkDeger[playerid]==sizeof(TextdrawRenkleri)-1)
  412.         {
  413.             renkDeger[playerid]=0;
  414.         }
  415.         else renkDeger[playerid]++;
  416.  
  417.         format(str, sizeof(str), "%s{%s}<!>{FFFFFF} Açık Pozisyon\t%s\n", str, TextdrawRenkleri[renkDeger[playerid]][hexKod], acpos);
  418.         format(str, sizeof(str), "%s{%s}<!>{FFFFFF} Kapalı Pozisyon\t%s\n \n", str, TextdrawRenkleri[renkDeger[playerid]][hexKod], kapos);
  419.  
  420.         format(str, sizeof(str), "%s{%s}<!>{FFFFFF} Kapı Hızı\t%.1f m/s\n", str, TextdrawRenkleri[renkDeger[playerid]][hexKod], gateData[id][gateHiz]);
  421.         format(str, sizeof(str), "%s{%s}<!>{FFFFFF} Erişim Uzaklığı\t%.1f pr\n", str, TextdrawRenkleri[renkDeger[playerid]][hexKod], gateData[id][gateUzaklik]);
  422.         format(str, sizeof(str), "%s{%s}<!>{FFFFFF} Kapı Şifresi\t%s\n\n", str, TextdrawRenkleri[renkDeger[playerid]][hexKod], gateData[id][gateSifre]);
  423.         format(str, sizeof(str), "%s{%s}<!>{FFFFFF} Virtual Değeri\t%d\n\n", str, TextdrawRenkleri[renkDeger[playerid]][hexKod], gateData[id][gateVirtual]);
  424.         format(str, sizeof(str), "%s{%s}<!>{FFFFFF} Interior Değeri\t%d\n\n", str, TextdrawRenkleri[renkDeger[playerid]][hexKod], gateData[id][gateInterior]);
  425.         format(str, sizeof(str), "%s{%s}<!>{FFFFFF} Obje Modeli\t%d\n \n", str, TextdrawRenkleri[renkDeger[playerid]][hexKod], gateData[id][gateObjeModel]);
  426.  
  427.         format(str, sizeof(str), "%s{%s}<!>{FFFFFF} Kapı Durumu\t%s\n", str, TextdrawRenkleri[renkDeger[playerid]][hexKod], (gateData[id][gateDurum] == true) ? ("{73EB65}Açık") : ("{FA6656}Kapalı"));
  428.         format(str, sizeof(str), "%s{%s}<!>{FFFFFF} Kapıya Işınlan\t{288A61}>>>\n", str, TextdrawRenkleri[renkDeger[playerid]][hexKod]);
  429.  
  430.         ShowPlayerDialog(playerid, GATE_DIALOG, DIALOG_STYLE_TABLIST_HEADERS, baslik, str, "Ayarla", "Iptal");
  431.         return 1;
  432. }
  433.  
  434. CMD:gateolustur(playerid, params[])
  435. {
  436.     if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "{B30000}<!>{FFFFFF} Geçersiz yetki tipi.");
  437.         new id = Iter_Free(Gateler), obje;
  438.         if(id == -1) return SendClientMessage(playerid, -1, "{EC6C6C}<!>{FFFFFF} Sunucu maksimum gate seviyesine ulaştı.");
  439.         if(sscanf(params, "d", obje)) return SendClientMessage(playerid, -1, "{9BB5E3}<!>{FFFFFF} /gateolustur [obje modeli]");
  440.     GateOlustur(playerid, id, obje);
  441.     SendClientMessage(playerid, -1, "{9CE2B5}<!>{FFFFFF} Yeni bir gate başarıyla oluşturuldu, kontrol etmek için; /gateduzenle [id]");
  442.         return 1;
  443. }
  444.  
  445. CMD:gatesil(playerid, params[])
  446. {
  447.     if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "{B30000}<!>{FFFFFF} Geçersiz yetki tipi.");
  448.         new id;
  449.         if(sscanf(params, "d", id)) return SendClientMessage(playerid, -1, "{9BB5E3}<!>{FFFFFF} /gatesil [id]");
  450.         if(!Iter_Contains(Gateler, id)) return SendClientMessage(playerid, -1, "{EC6C6C}<!>{FFFFFF} Belirtilen ID'de gate mevcut değil.");
  451.     GateSil(id);
  452.     SendClientMessage(playerid, -1, "{9CE2B5}<!>{FFFFFF} Girilen değeri karşılayan gate başarıyla silindi.");
  453.         return 1;
  454. }
  455.  
  456. CMD:gateduzenle(playerid, params[])
  457. {
  458.     if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "{B30000}<!>{FFFFFF} Geçersiz yetki tipi.");
  459.         new id;
  460.         if(sscanf(params, "d", id)) return SendClientMessage(playerid, -1, "{9BB5E3}<!>{FFFFFF} /gateduzenle [id]");
  461.         if(!Iter_Contains(Gateler, id)) return SendClientMessage(playerid, -1, "{EC6C6C}<!>{FFFFFF} Belirtilen ID'de gate mevcut değil.");
  462.         SetPVarInt(playerid, "GateDuzenleID", id);
  463.         GateDuzenleMenu(playerid);
  464.         return 1;
  465. }
  466.  
  467. CMD:gate(playerid, params[])
  468. {
  469.         new id = GateBul(playerid);
  470.         if(id == -1) return SendClientMessage(playerid, -1, "{EC6C6C}<!>{FFFFFF} Özel bir kapıya yeterince yakın değilsiniz.");
  471.         if(gateData[id][gateAcikPos][0] == gateData[id][gateKapaliPos][0] && gateData[id][gateAcikPos][1] == gateData[id][gateKapaliPos][1] && gateData[id][gateAcikPos][2] == gateData[id][gateKapaliPos][2]) return SendClientMessage(playerid, -1, "{EC6C6C}<!>{FFFFFF} Bu kapı henüz ayarlanmamış.");
  472.         if(gateData[id][gateHiz] == 0) return SendClientMessage(playerid, -1, "{EC6C6C}<!>{FFFFFF} Bu kapının hızı ayarlı değil.");
  473.     if(strcmp(gateData[id][gateSifre], "-", true))
  474.     {
  475.             new sifre[32];
  476.             if(sscanf(params, "s[32]", sifre)) return SendClientMessage(playerid, -1, "{9BB5E3}<!>{FFFFFF} /gate [şifre]");
  477.             if(strcmp(sifre, gateData[id][gateSifre]) != 0) return SendClientMessage(playerid, -1, "{EC6C6C}<!>{FFFFFF} Kapı şifresi hatalı.");
  478.         }
  479.         if(gateData[id][gateDurum] == true)
  480.         {
  481.             MoveDynamicObject(gateData[id][gateObje], gateData[id][gateKapaliPos][0], gateData[id][gateKapaliPos][1], gateData[id][gateKapaliPos][2], gateData[id][gateHiz], gateData[id][gateKapaliPos][3], gateData[id][gateKapaliPos][4], gateData[id][gateKapaliPos][5]);
  482.             gateData[id][gateDurum] = false;
  483.         }
  484.         else
  485.         {
  486.             MoveDynamicObject(gateData[id][gateObje], gateData[id][gateAcikPos][0], gateData[id][gateAcikPos][1], gateData[id][gateAcikPos][2], gateData[id][gateHiz], gateData[id][gateAcikPos][3], gateData[id][gateAcikPos][4], gateData[id][gateAcikPos][5]);
  487.             gateData[id][gateDurum] = true;
  488.         }
  489.         return 1;
  490. }