Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- yEditor 0.5b
- YLLERON'S OBJECT EDITOR
- ---------------------------
- You can edit everything you want but
- this header must still unchanged.
- ylleron
- */
- #include <a_samp>
- #define PRESSED(%0) (((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0)))
- #define MAX_YOBJ 500
- #define EDIT_NONE 0
- #define EDIT_POS 1
- #define EDIT_ROT 2
- #define EDIT_CAM 3
- #define downkey 4
- #define upkey 512
- //------------------------------------------------------------------------------
- new StateEdit[MAX_PLAYERS] = EDIT_NONE;
- enum e_ye_sVars
- {
- yObj_SavedId[MAX_YOBJ],
- yObjects[MAX_YOBJ],
- yObj_curObj, // pohyb
- yObj_ChoObj, // IDS
- yObj_count, // pocet
- yObj_id // objectid
- }
- new yEditor_sVars[e_ye_sVars];
- //----------------------------
- new Float:ObjX,Float:ObjY,Float:ObjZ;
- new Float:ObjrX,Float:ObjrY,Float:ObjrZ;
- //------------------------------------------------------------------------------
- public OnFilterScriptInit()
- {
- print("\n-----------------------");
- print("yEditor 0.1c by ylleron");
- print("-----------------------\n");
- //======================================
- SetTimer("yUpd_CameraState", 50, true);
- return 1;
- }
- public OnFilterScriptExit()
- {
- return 1;
- }
- forward yUpd_CameraState();
- public yUpd_CameraState()
- {
- for(new i=0;i<MAX_PLAYERS;i++)
- {
- if(IsPlayerConnected(i) && StateEdit[i])
- {
- GetObjectPos(yEditor_sVars[yObj_curObj], ObjX, ObjY, ObjZ);
- SetPlayerCameraLookAt(i, ObjX, ObjY, ObjZ);
- //----------------------------------------------------------------
- GetObjectRot(yEditor_sVars[yObj_curObj], ObjrX, ObjrY, ObjrZ);
- }
- }
- return -1;
- }
- public OnPlayerCommandText(playerid, cmdtext[])
- {
- if (!strcmp(cmdtext, "/yeditor", true))
- {
- ShowPlayerDialog(playerid, 10, DIALOG_STYLE_LIST, "yEditor 0.1c", "Create object\nEdit objects\nStop Edit\nDestroy Object\nGoto object pos\nSave Objects\nAbout", "OK", "Cancel");
- }
- return 1;
- }
- public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
- {
- if (PRESSED(KEY_FIRE) && StateEdit[playerid] != EDIT_NONE) {
- StateEdit[playerid] = (StateEdit[playerid] == EDIT_POS) ? EDIT_ROT : EDIT_POS;
- }
- new keys, u, p;
- GetPlayerKeys(playerid, keys, u, p);
- if (StateEdit[playerid] == EDIT_POS) {
- if (PRESSED(upkey))
- if (keys == KEY_JUMP) {
- SetObjectPos(yEditor_sVars[yObj_curObj], ObjX, ObjY, ObjZ+1.0); // fast
- }
- else SetObjectPos(yEditor_sVars[yObj_curObj], ObjX, ObjY, ObjZ+0.5);
- if (PRESSED(downkey))
- if (keys == KEY_JUMP) {
- SetObjectPos(yEditor_sVars[yObj_curObj], ObjX, ObjY, ObjZ-1.0); // fast
- }
- else SetObjectPos(yEditor_sVars[yObj_curObj], ObjX, ObjY, ObjZ-0.5);
- }
- if (StateEdit[playerid] != EDIT_NONE) {
- if (PRESSED(KEY_ACTION))
- yEdit_StopEdit(playerid);
- }
- return 1;
- }
- public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
- {
- if (dialogid == 10)
- {
- if (response)
- {
- switch(listitem)
- {
- case 0: // Create
- {
- ShowPlayerDialog(playerid, 11, DIALOG_STYLE_INPUT, "Create new object", "Please type model id of new object", "Create", "Cancel");
- }
- case 1: // Edit
- {
- ShowPlayerDialog(playerid, 12, DIALOG_STYLE_INPUT, "Move object", "Please type id of object", "Edit", "Cancel");
- }
- case 2: // Stop Edit
- {
- if (StateEdit[playerid] != EDIT_NONE) {
- yEdit_StopEdit(playerid);
- }
- else return SendClientMessage(playerid, 0x0000FFAA, "yEditor: You aren't editing any object!");
- }
- case 3: // Destroy object
- {
- ShowPlayerDialog(playerid, 13, DIALOG_STYLE_INPUT, "Destroy object", "Please type id of object", "Destroy", "Cancel");
- }
- case 4:
- {
- StateEdit[playerid] = EDIT_CAM;
- }
- case 5:
- {
- yEdit_Save(playerid);
- }
- case 6:
- {
- ShowPlayerDialog(playerid, 14, DIALOG_STYLE_MSGBOX, "yEditor 0.1c (RC1)", "yEditor v0.1c by ylleron\n\nFor normal move hold 'KEY SPRINT'\nFor fastest move hold 'KEY JUMP'\n\nTo change edit method press 'KEY FIRE' (Method: POS, Method: ROT)\nUp object - 1 (on numerical keyboard)\nDown - 0 (on numerical keyboard)\nPlease, report bugs.\nWe can make better and better scripts", "OK", "");
- }
- }
- }
- }
- if (dialogid == 11)
- {
- if (response)
- {
- if (!StateEdit[playerid] && strlen(inputtext) > 0) {
- yEdit_CreateObject(playerid, strval(inputtext));
- }
- else return SendClientMessage(playerid, 0x0000FFAA, "yEditor: You are already editing one of the object!");
- }
- }
- if (dialogid == 12)
- {
- if (response)
- {
- if (!StateEdit[playerid]) {
- if (strlen(inputtext) > 0) {
- yEdit_EditObject(playerid, strval(inputtext));
- StateEdit[playerid] = EDIT_POS;
- }
- }
- else return SendClientMessage(playerid, 0x0000FFAA, "yEditor: You are already editing one of the object!");
- }
- }
- if (dialogid == 13)
- {
- if (response)
- {
- if (strlen(inputtext) > 0) {
- yEdit_DestroyObject(playerid, strval(inputtext));
- }
- }
- }
- if (dialogid == 14)
- {
- if (response) return 1;
- }
- return 1;
- }
- forward KeyEdit(playerid);
- public KeyEdit(playerid)
- {
- if (StateEdit[playerid] == EDIT_NONE) return 0;
- // Object move -------------------------------------------------------------
- new keys, updown, leftright;
- GetPlayerKeys(playerid, keys, updown, leftright);
- //---------------------------------------------------------
- switch(StateEdit[playerid])
- {
- case EDIT_POS:
- {
- // Y Pos --------------------------
- if (updown < 0) {
- if (keys == KEY_SPRINT) SetObjectPos(yEditor_sVars[yObj_curObj], ObjX, ObjY+0.1, ObjZ); // normal
- else if (keys == KEY_JUMP) SetObjectPos(yEditor_sVars[yObj_curObj], ObjX, ObjY+1.0, ObjZ); // fast
- else SetObjectPos(yEditor_sVars[yObj_curObj], ObjX, ObjY+0.01, ObjZ); //slow
- }
- else if (updown > 0) {
- if (keys == KEY_SPRINT) SetObjectPos(yEditor_sVars[yObj_curObj], ObjX, ObjY-0.1, ObjZ);
- else if (keys == KEY_JUMP) SetObjectPos(yEditor_sVars[yObj_curObj], ObjX, ObjY-1.0, ObjZ); // fastest
- else SetObjectPos(yEditor_sVars[yObj_curObj], ObjX, ObjY-0.01, ObjZ);
- }
- // X Pos --------------------------
- if (leftright > 0) {
- if (keys == KEY_SPRINT) SetObjectPos(yEditor_sVars[yObj_curObj], ObjX+0.1, ObjY, ObjZ);
- else if (keys == KEY_JUMP) SetObjectPos(yEditor_sVars[yObj_curObj], ObjX+1.0, ObjY, ObjZ); // fastest
- else SetObjectPos(yEditor_sVars[yObj_curObj], ObjX+0.01, ObjY, ObjZ);
- }
- else if (leftright < 0) {
- if (keys == KEY_SPRINT) SetObjectPos(yEditor_sVars[yObj_curObj], ObjX-0.1, ObjY, ObjZ);
- else if (keys == KEY_JUMP) SetObjectPos(yEditor_sVars[yObj_curObj], ObjX-1.0, ObjY, ObjZ); // fastest
- else SetObjectPos(yEditor_sVars[yObj_curObj], ObjX-0.01, ObjY, ObjZ);
- }
- }
- case EDIT_ROT:
- {
- if (updown < 0) {
- if (keys == KEY_SPRINT) SetObjectRot(yEditor_sVars[yObj_curObj], ObjrX, ObjrY+2.0, ObjrZ);
- else if (keys == KEY_JUMP) SetObjectPos(yEditor_sVars[yObj_curObj], ObjX, ObjY+4.0, ObjZ); // fastest
- else SetObjectRot(yEditor_sVars[yObj_curObj], ObjrX, ObjrY+1.0, ObjrZ);
- }
- else if (updown > 0) {
- if (keys == KEY_SPRINT) SetObjectRot(yEditor_sVars[yObj_curObj], ObjrX, ObjrY-2.0, ObjrZ);
- else if (keys == KEY_JUMP) SetObjectPos(yEditor_sVars[yObj_curObj], ObjX, ObjY-4.0, ObjZ); // fastest
- else SetObjectRot(yEditor_sVars[yObj_curObj], ObjrX, ObjrY-1.0, ObjrZ);
- }
- if (leftright < 0) {
- if (keys == KEY_SPRINT) SetObjectRot(yEditor_sVars[yObj_curObj], ObjrX+2.0, ObjrY, ObjrZ);
- else if (keys == KEY_JUMP) SetObjectPos(yEditor_sVars[yObj_curObj], ObjX+4.0, ObjY, ObjZ); // fastest
- else SetObjectRot(yEditor_sVars[yObj_curObj], ObjrX+1.0, ObjrY, ObjrZ);
- }
- else if (leftright > 0) {
- if (keys == KEY_SPRINT) SetObjectRot(yEditor_sVars[yObj_curObj], ObjrX-2.0, ObjrY, ObjrZ);
- else if (keys == KEY_JUMP) SetObjectPos(yEditor_sVars[yObj_curObj], ObjX+4.0, ObjY, ObjZ); // fastest
- else SetObjectRot(yEditor_sVars[yObj_curObj], ObjrX-1.0, ObjrY, ObjrZ);
- }
- }
- case EDIT_CAM:
- {
- GetObjectPos(yEditor_sVars[yObj_curObj], ObjX, ObjY, ObjZ);
- SetPlayerCameraPos(playerid, ObjX+15, ObjY, ObjZ+15);
- SetPlayerCameraLookAt(playerid, ObjX, ObjY, ObjZ);
- }
- }
- return 0;
- }
- //==============================================================================
- stock yEdit_CreateObject(playerid, id)
- {
- if(yEditor_sVars[yObj_count] < MAX_YOBJ)
- {
- // Increase created
- yEditor_sVars[yObj_count]++;
- yEditor_sVars[yObj_id] = id;
- // Definovanie nový floatov
- new Float:px,Float:py,Float:pz;
- GetPlayerPos(playerid, px, py, pz);
- yEditor_sVars[yObj_SavedId][yEditor_sVars[yObj_count]] = id;
- yEditor_sVars[yObjects][yEditor_sVars[yObj_count]] = CreateObject(yEditor_sVars[yObj_id], px, py+1.0, pz, 0, 0, 0);
- new _Str[100];
- format(_Str, sizeof(_Str), "yEditor: Created new object! Model ID: %d | Object ID: %d", yEditor_sVars[yObj_id], yEditor_sVars[yObjects][yEditor_sVars[yObj_count]]);
- SendClientMessage(playerid, 0x0000FFAA, _Str);
- }
- return true;
- }
- //==============================================================================
- stock yEdit_DestroyObject(playerid, id)
- {
- DestroyObject(yEditor_sVars[yObjects][id]);
- yEditor_sVars[yObj_count]--;
- StateEdit[playerid] = EDIT_POS;
- //--------------------------------------
- yEdit_StopEdit(playerid);
- return 1;
- }
- //==============================================================================
- stock yEdit_EditObject(playerid, id)
- {
- //------------------------------------
- yEditor_sVars[yObj_ChoObj] = id;
- yEditor_sVars[yObj_curObj] = id;
- TogglePlayerControllable(playerid, 0);
- SetTimerEx("KeyEdit", 100, 1, "i", playerid);
- //-----------------------------
- GetObjectPos(yEditor_sVars[yObj_curObj], ObjX, ObjY, ObjZ);
- //-----------------------------
- if (ObjX == 0.0 && ObjY == 0.0 && ObjZ == 0.0) {
- SendClientMessage(playerid, 0x0000FFAA, "yEditor: This object doesn't exist!");
- yEdit_StopEdit(playerid);
- return 0;
- }
- SetPlayerCameraPos(playerid, ObjX+15, ObjY, ObjZ+15);
- SetPlayerCameraLookAt(playerid, ObjX, ObjY, ObjZ);
- switch(StateEdit[playerid])
- {
- case EDIT_POS: GameTextForPlayer(playerid, "YOU ARE EDITING POSITION", 1000*4, 5);
- case EDIT_ROT: GameTextForPlayer(playerid, "YOU ARE EDITING ROTATION", 1000*4, 5);
- }
- //-----------------------------
- return 1;
- }
- //==============================================================================
- stock yEdit_StopEdit(playerid)
- {
- SetCameraBehindPlayer(playerid);
- TogglePlayerControllable(playerid, 1);
- // ----------------------------------
- yEditor_sVars[yObj_curObj] = -1;
- StateEdit[playerid] = EDIT_NONE;
- return 1;
- }
- // this stock isn't used, you can use it as new action in dialog
- stock yEdit_CloneObject(playerid, id)
- {
- if(yEditor_sVars[yObj_count] < MAX_YOBJ)
- {
- // Increase created
- yEditor_sVars[yObj_count]++;
- yEditor_sVars[yObj_id] = id;
- // Definovanie nový floatov
- GetObjectPos(id, ObjX, ObjY, ObjZ);
- GetObjectRot(id, ObjrX, ObjrY, ObjrZ);
- yEditor_sVars[yObj_SavedId][yEditor_sVars[yObj_count]] = id;
- yEditor_sVars[yObjects][yEditor_sVars[yObj_count]] = CreateObject(yEditor_sVars[yObj_id], ObjX, ObjY, ObjZ, ObjrX, ObjrY, ObjrZ);
- new _Str[100];
- format(_Str, sizeof(_Str), "yEditor: Cloned object created! Model ID: %d | Object ID: %d", yEditor_sVars[yObj_id], yEditor_sVars[yObjects][yEditor_sVars[yObj_count]]);
- SendClientMessage(playerid, 0x0000FFAA, _Str);
- }
- }
- //==============================================================================
- stock yEdit_Save(playerid)
- {
- new File:gFile;
- gFile = fopen("/yEditor/saved_objects.txt", io_append);
- for(new i=0;i<yEditor_sVars[yObj_count];i++)
- {
- //-----------------------------
- GetObjectPos(i, ObjX, ObjY, ObjZ);
- GetObjectRot(i, ObjrX, ObjrY, ObjrZ);
- //-----------------------------
- if (ObjX == 0.0 && ObjY == 0.0 && ObjZ == 0.0) return 0;
- else {
- new flo[168];
- format(flo, sizeof(flo), "CreateObject(%d, %.4f, %.4f, %.4f, %.4f, %.4f, %.4f);\r\n", yEditor_sVars[yObj_SavedId][i], ObjX, ObjY, ObjZ, ObjrX, ObjrY, ObjrZ);
- fwrite(gFile, flo);
- }
- }
- fclose(gFile);
- //---------------------------------------------------------
- SendClientMessage(playerid, 0x0000FFAA, "yEditor: All Objects saved!");
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement