OKStyle

Ingame Map Editor

May 1st, 2012
662
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <a_samp>
  2. // Ingame Map Editor for 0.3e 1.0 by O.K.Style™
  3. #define DIALOG_MAP_ID 1000
  4. /*
  5. new ObjectList[] = {"Holding Objects\nLights\nSpray Tags\nParticle Effects\nSA:MP Logos\nLand Masses\nBase Sections\nElevator from VC\nDM Cages\nRacing\nParkour\nSky Diving Platforms\nTunnel Sections\nRamps\nModular Road Sections\nModular Bridge Sections\n"};
  6. new ObjectList1[] = {"Tubes and Funnels\nSpheres\nMore Stuff\nNew Objects added since IMG Beta 1 - 154 Objects\nObjects added in 0.3c RC4 (109 Objects)\nObjects added in 0.3c RC5 (143 Objects)\nBridge from GTALC\nObjects added in 0.3d RC3-3 (18 Objects)\n"};
  7. new ObjectList2[] = {"Objects added in 0.3d RC7 (16 Objects)\nObjects added in 0.3d (8 objects)\nObjects added in 0.3e RC1 (25 objects)\nObjects added in 0.3e RC3 (54 objects)\nObjects added in 0.3e RC4 (44 objects)\nObjects added in 0.3e RC6 (5 objects)\nObjects added in 0.3e RC7 (31 objects)"};
  8. */
  9. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  10. {
  11.     if(newkeys & KEY_SUBMISSION) ShowPlayerDialog(playerid, DIALOG_MAP_ID, DIALOG_STYLE_LIST, "Выберите действие", "[1] Создать объект\n[2] Создать надпись\n[3] Сменить материал\n[5] Изменить положение\n[4] Удалить объект", "Выбор", "Выход");
  12.     return 1;
  13. }
  14. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  15. {
  16.     new Float:x, Float:y, Float:z;
  17.     if(dialogid == DIALOG_MAP_ID)
  18.     {
  19.         if(!response) return 0;
  20.         switch(listitem)
  21.         {
  22.             case 0: ShowPlayerDialog(playerid, DIALOG_MAP_ID + 1, DIALOG_STYLE_LIST, "Выберите тип объекта", "[1] Глобальный объект\n[2] Персональный объект\n[3] Аттач к транспорту\n[4] Аттач к игроку", "Выбор", "Отмена");
  23.             case 1: ShowPlayerDialog(playerid, DIALOG_MAP_ID + 7, DIALOG_STYLE_LIST, "Выберите ID подложки", "Plane001 (19475)\nPlane002 (19476)\nPlane003 (19477)\nPlane004 (19478)\nPlane005 (19479)\nPlane006 (19480)\nPlane007 (19481)\nPlane008 (19482)\nPlane009 (19483)", "Выбор", "Назад");
  24.             case 2: ShowPlayerDialog(playerid, DIALOG_MAP_ID + 9, DIALOG_STYLE_MSGBOX, "Замена материала", "Выберите объект для\nзамены материала.", "Ок", "");
  25.             case 3, 4: SelectObject(playerid);
  26.         }
  27.         SetPVarInt(playerid, "MapMode", listitem);
  28.         return 1;
  29.     }
  30.     else if(dialogid == DIALOG_MAP_ID + 1)
  31.     {
  32.         if(!response) return ShowPlayerDialog(playerid, DIALOG_MAP_ID, DIALOG_STYLE_LIST, "Выберите действие", "[1] Создать объект\n[2] Создать надпись\n[3] Сменить материал\n[5] Изменить положение\n[4] Удалить объект", "Выбор", "Выход");
  33.         SetPVarInt(playerid, "ObjectType", listitem);
  34.         ShowPlayerDialog(playerid, DIALOG_MAP_ID + 2, DIALOG_STYLE_INPUT, "Выберите ID объекта", "Введите ID объекта:", "Выбор", "Отмена");
  35. //      ShowPlayerDialog(playerid, DIALOG_MAP_ID + 2, DIALOG_STYLE_LIST, "Выберите ID объекта", "Список объектов", "Выбор", "Отмена");
  36.     }
  37.     else if(dialogid == DIALOG_MAP_ID + 2)
  38.     {
  39.         if(!response) return ShowPlayerDialog(playerid, DIALOG_MAP_ID, DIALOG_STYLE_LIST, "Выберите действие", "[1] Создать объект\n[2] Создать надпись\n[3] Сменить материал\n[5] Изменить положение\n[4] Удалить объект", "Выбор", "Выход");
  40.         new model = strval(inputtext);
  41. /*
  42.         new model;
  43.         switch(listitem)
  44.         {
  45.             case 0: model = 1000;
  46.         }
  47. */
  48.         new otype = GetPVarInt(playerid, "ObjectType");
  49.         switch(otype)
  50.         {
  51.             case 0:
  52.             {
  53.                 GetPlayerPos(playerid, x, y, z);
  54.                 new cobj = CreateObject(model, x + 2.0, y + 2.0, z + 1.0, 0.0, 0.0, 0.0);
  55.                 EditObject(playerid, cobj);
  56.             }
  57.             case 1:
  58.             {
  59.                 GetPlayerPos(playerid, x, y, z);
  60.                 new cobj = CreatePlayerObject(playerid, model,x + 2.0, y + 2.0, z + 1.0, 0.0, 0.0, 0.0);
  61.                 EditPlayerObject(playerid, cobj);
  62.             }
  63.             case 2:
  64.             {
  65.                 if(!IsPlayerInAnyVehicle(playerid)) return ShowPlayerDialog(playerid, DIALOG_MAP_ID + 5, DIALOG_STYLE_MSGBOX, "Редактирование объекта", "Вы должны находиться в транспорте.", "Ок", "");
  66.                 printf("%d", model);
  67.                 new vid = GetPlayerVehicleID(playerid);
  68.                 GetVehiclePos(vid, x, y, z);
  69.                 new vaobject = CreateObject(playerid, model, x + 2.0, y + 2.0, z + 1.0, 0.0, 0.0, 0.0);
  70.                 SetPVarInt(playerid, "VehicleObj", vaobject);
  71.                 GetVehicleModelInfo(GetVehicleModel(vid), VEHICLE_MODEL_INFO_SIZE, x, y, z);
  72.                 AttachObjectToVehicle(vaobject, vid, x, y, z, 0.0, 0.0, 0.0);
  73.                 EditAttachedObject(playerid, vaobject);
  74.             }
  75.             case 3:
  76.             {
  77.                 if(IsPlayerInAnyVehicle(playerid)) return ShowPlayerDialog(playerid, DIALOG_MAP_ID + 5, DIALOG_STYLE_MSGBOX, "Редактирование объекта", "Вы не должны находиться в транспорте.", "Ок", "");
  78.                 new aindex = GetPVarInt(playerid, "AttachIndex");
  79.                 if(aindex > 9) return ShowPlayerDialog(playerid, DIALOG_MAP_ID + 3, DIALOG_STYLE_MSGBOX, "Аттач объекта", "Вы уже присоединили 10 объектов,\bнеобходимо удалить какие-либо имеющиеся\nдля продолжения действий с объектами.", "Далее", "Отмена");
  80.                 SetPVarInt(playerid, "AttachIndex", aindex + 1);
  81.                 ShowPlayerDialog(playerid, DIALOG_MAP_ID + 6, DIALOG_STYLE_LIST, "Выбор части тела", "1 - Спина\n2 - Голова\n3 - Левое плечо\n4 - Правое плечо\n5 - Левая рука\n6 - Правая рука\n7 - Левое бедро\n8 - Правое бедро\n9 - Левая нога\n10 - Правая нога\n11 - Правые икры\n12 - Левые икры\n13 - Левое предплечье\n14 - Правое предплечье\n15 - Левая ключица\n16 - Правая ключица\n17 - Шея\n18 - Челюсть", "Выбор", "Отмена");
  82.                 SetPVarInt(playerid, "AttachModel", model);
  83.             }
  84.         }
  85.     }
  86.     else if(dialogid == DIALOG_MAP_ID + 3)
  87.     {
  88.         if(!response) return ShowPlayerDialog(playerid, DIALOG_MAP_ID, DIALOG_STYLE_LIST, "Выберите действие", "[1] Создать объект\n[2] Создать надпись\n[3] Сменить материал\n[5] Изменить положение\n[4] Удалить объект", "Выбор", "Выход");
  89.         ShowPlayerDialog(playerid, DIALOG_MAP_ID + 4, DIALOG_STYLE_INPUT, "Индекс удаляемого объекта", "Введите индекс приаттаченного\nобъекта для удаления:", "Ввод", "Отмена");
  90.     }
  91.     else if(dialogid == DIALOG_MAP_ID + 4)
  92.     {
  93.         if(!response) return ShowPlayerDialog(playerid, DIALOG_MAP_ID, DIALOG_STYLE_LIST, "Выберите действие", "[1] Создать объект\n[2] Создать надпись\n[3] Сменить материал\n[5] Изменить положение\n[4] Удалить объект", "Выбор", "Выход");
  94.         new index = strval(inputtext);
  95.         if(IsPlayerAttachedObjectSlotUsed(playerid, index)) RemovePlayerAttachedObject(playerid, index);
  96.         ShowPlayerDialog(playerid, DIALOG_MAP_ID + 5, DIALOG_STYLE_MSGBOX, "Редактирование объекта", "Объект удалён.", "Ок", "");
  97.     }
  98.     else if(dialogid == DIALOG_MAP_ID + 6)
  99.     {
  100.         if(!response) return ShowPlayerDialog(playerid, DIALOG_MAP_ID, DIALOG_STYLE_LIST, "Выберите действие", "[1] Создать объект\n[2] Создать надпись\n[3] Сменить материал\n[5] Изменить положение\n[4] Удалить объект", "Выбор", "Выход");
  101.         new bone = listitem + 1;
  102.         new slot = GetPVarInt(playerid, "AttachIndex");
  103.         SetPlayerAttachedObject(playerid, slot, GetPVarInt(playerid, "AttachModel"), bone);
  104.         EditAttachedObject(playerid, slot);
  105.     }
  106.     else if(dialogid == DIALOG_MAP_ID + 7)
  107.     {
  108.         if(!response) return ShowPlayerDialog(playerid, DIALOG_MAP_ID, DIALOG_STYLE_LIST, "Выберите действие", "[1] Создать объект\n[2] Создать надпись\n[3] Сменить материал\n[5] Изменить положение\n[4] Удалить объект", "Выбор", "Выход");
  109.         SetPVarInt(playerid, "SignModel", listitem);
  110.         ShowPlayerDialog(playerid, DIALOG_MAP_ID + 8, DIALOG_STYLE_INPUT, "Текст надписи", "Введите текст надписи:", "Ввод", "Отмена");
  111.     }
  112.     else if(dialogid == DIALOG_MAP_ID + 8)
  113.     {
  114.         if(!response) return ShowPlayerDialog(playerid, DIALOG_MAP_ID, DIALOG_STYLE_LIST, "Выберите действие", "[1] Создать объект\n[2] Создать надпись\n[3] Сменить материал\n[5] Изменить положение\n[4] Удалить объект", "Выбор", "Выход");
  115.         GetPlayerPos(playerid, x, y, z);
  116.         new sobj = CreateObject(GetPVarInt(playerid, "SignModel"), x + 2.0, y + 2.0, z + 1.0, 0.0, 0.0, 0.0);
  117.         SetObjectMaterialText(sobj, inputtext);
  118.         EditObject(playerid, sobj);
  119.     }
  120.     else if(dialogid == DIALOG_MAP_ID + 9)
  121.     {
  122.         SelectObject(playerid);
  123.         return 1;
  124.     }
  125.     else if(dialogid == DIALOG_MAP_ID + 10)
  126.     {
  127.         if(!response) return ShowPlayerDialog(playerid, DIALOG_MAP_ID, DIALOG_STYLE_LIST, "Выберите действие", "[1] Создать объект\n[2] Создать надпись\n[3] Сменить материал\n[5] Изменить положение\n[4] Удалить объект", "Выбор", "Выход");
  128.         SetPVarInt(playerid, "MaterialObject", strval(inputtext));
  129.         ShowPlayerDialog(playerid, DIALOG_MAP_ID + 11, DIALOG_STYLE_INPUT, "Настройки бъекта-донора", "Название пакета текстур:", "Ввод", "Отмена");
  130.         return 1;
  131.     }
  132.     else if(dialogid == DIALOG_MAP_ID + 11)
  133.     {
  134.         if(!response) return ShowPlayerDialog(playerid, DIALOG_MAP_ID, DIALOG_STYLE_LIST, "Выберите действие", "[1] Создать объект\n[2] Создать надпись\n[3] Сменить материал\n[5] Изменить положение\n[4] Удалить объект", "Выбор", "Выход");
  135.         SetPVarString(playerid, "MaterialTxd", inputtext);
  136.         ShowPlayerDialog(playerid, DIALOG_MAP_ID + 12, DIALOG_STYLE_INPUT, "Настройки бъекта-донора", "Название текстуры:", "Ввод", "Отмена");
  137.         return 1;
  138.     }
  139.     else if(dialogid == DIALOG_MAP_ID + 12)
  140.     {
  141.         if(!response) return ShowPlayerDialog(playerid, DIALOG_MAP_ID, DIALOG_STYLE_LIST, "Выберите действие", "[1] Создать объект\n[2] Создать надпись\n[3] Сменить материал\n[5] Изменить положение\n[4] Удалить объект", "Выбор", "Выход");
  142.         SetPVarString(playerid, "MaterialTexture", inputtext);
  143.         ShowPlayerDialog(playerid, DIALOG_MAP_ID + 13, DIALOG_STYLE_INPUT, "Настройки объекта", "Введите порядковый индекс\nтекстуры для замены:", "Ввод", "Отмена");
  144.         return 1;
  145.     }
  146.     else if(dialogid == DIALOG_MAP_ID + 13)
  147.     {
  148.         if(!response) return ShowPlayerDialog(playerid, DIALOG_MAP_ID, DIALOG_STYLE_LIST, "Выберите действие", "[1] Создать объект\n[2] Создать надпись\n[3] Сменить материал\n[5] Изменить положение\n[4] Удалить объект", "Выбор", "Выход");
  149.         new txd[30];
  150.         GetPVarString(playerid, "MaterialTxd", txd, sizeof(txd));
  151.         new texture[30];
  152.         GetPVarString(playerid, "MaterialTexture", texture, sizeof(texture));
  153.         SetObjectMaterial(GetPVarInt(playerid, "EditedObject"), strval(inputtext), GetPVarInt(playerid, "MaterialObject"), txd, texture, 0); // можно сделать и выбор цвета
  154.         return 1;
  155.     }
  156.     return 0;
  157. }
  158. public OnPlayerSelectObject(playerid, type, objectid, modelid, Float:fX, Float:fY, Float:fZ)
  159. {
  160.     new mapmode = GetPVarInt(playerid, "MapMode");
  161.     switch(mapmode)
  162.     {
  163.         case 2:
  164.         {
  165.             SetPVarInt(playerid, "EditedObject", objectid);
  166.             ShowPlayerDialog(playerid, DIALOG_MAP_ID + 10, DIALOG_STYLE_INPUT, "Введите ID объекта-донора", "ID объекта-донора:", "Ввод", "Отмена");
  167.         }
  168.         case 4:
  169.         {
  170.             DestroyObject(objectid);
  171.         }
  172.     }
  173. }
  174. public OnPlayerEditObject(playerid, playerobject, objectid, response, Float:fX, Float:fY, Float:fZ, Float:fRotX, Float:fRotY, Float:fRotZ)
  175. {
  176.     new string[256];
  177.     if(!playerobject)
  178.     {
  179.         if(!IsValidObject(objectid)) return 1;
  180.         MoveObject(objectid, fX, fY, fZ, 10.0, fRotX, fRotY, fRotZ);
  181.     }
  182.     if(response == EDIT_RESPONSE_FINAL || response == EDIT_RESPONSE_CANCEL)
  183.     {
  184.         format(string, sizeof(string), "CreateObject(%d, %.4f, %.4f, %.4f, %.2f, %.2f, %.2f)", objectid, fX, fY, fZ, fRotX, fRotY, fRotZ);
  185.         printf(string);
  186.         SelectObject(playerid);
  187.     }
  188.     return 1;
  189. }
  190. 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)
  191. {
  192.     new string[256];
  193.     format(string, sizeof(string), "SetPlayerAttachedObject(playerid, %d, %d, %d, %.4f, %.4f, %.4f, %.2f, %.2f, %.2f, %.2f, %.2f, %.2f)", index, modelid, boneid, fOffsetX, fOffsetY, fOffsetZ, fRotX, fRotY, fRotZ, fScaleX, fScaleY, fScaleZ);
  194.     printf(string);
  195.     if(!IsPlayerInAnyVehicle(playerid)) SetPlayerAttachedObject(playerid, index, modelid, boneid, fOffsetX, fOffsetY, fOffsetZ, fRotX, fRotY, fRotZ, fScaleX, fScaleY, fScaleZ);
  196.     else AttachObjectToVehicle(GetPVarInt(playerid, "VehicleObj"), GetPlayerVehicleID(playerid), fOffsetX, fOffsetY, fOffsetZ, fRotX, fRotY, fRotZ);
  197. }
RAW Paste Data