Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <a_samp>
- // rychlost
- #define MOVE_SPEED 100.0
- #define ACCEL_RATE 0.03
- // mody
- #define MODE_NONE 0
- #define MODE_EDIT 1
- #define MODE_TEST 2
- // pohyb
- #define MOVE_FORWARD 1
- #define MOVE_BACK 2
- #define MOVE_LEFT 3
- #define MOVE_RIGHT 4
- #define MOVE_FORWARD_LEFT 5
- #define MOVE_FORWARD_RIGHT 6
- #define MOVE_BACK_LEFT 7
- #define MOVE_BACK_RIGHT 8
- #define INVISIBLE_MODEL_OBJECT 19999//19300
- #define DIALOG_ID 583
- #define VZDIALENOST_NOVEHO_OBJEKTU 20
- #define MAX_TLACITOK 9
- #define ZMENA_MODELU "zmena_modelu"
- #define OZNACENY_OBJEKT "oznaceny_objekt"
- #define LIST_POSLEDNY_OBJEKT "list_posledny_objekt"
- #define LIST_PRVY_OBJEKT "list_prvy_objekt"
- enum veci
- {
- stav,
- menu_stav,
- kamera_object,
- smer_pohybu,
- lr_stare,
- ud_stare,
- cas_pohyb,
- Float:rychlost,
- PlayerText:menu_txd,
- vyber_exit
- }
- new Data[MAX_PLAYERS][veci],
- Object_modelid[MAX_PLAYERS][MAX_OBJECTS];
- #if false
- public OnFilterScriptInit()
- {
- /* print("\n--------------------------------------");
- print(" Blank Filterscript by your name here");
- print("--------------------------------------\n");*/
- for(new i = 0; i < MAX_PLAYERS; i++){
- if(IsPlayerConnected(i)) OnPlayerConnect(i);
- }
- return 1;
- }
- public OnFilterScriptExit()
- {
- for(new i = 0; i < MAX_PLAYERS; i++){
- if(IsPlayerConnected(i)) OnPlayerDisconnect(i,0);
- }
- return 1;
- }
- #else
- main()
- {
- print("----------------------------------");
- print(" Object Editor by milous22");
- print("----------------------------------");
- }
- public OnGameModeInit()
- {
- SetWorldTime(12);
- SetGameModeText("SA:MP Object Editor");
- return 1;
- }
- public OnGameModeExit()
- {
- return 1;
- }
- public OnPlayerRequestClass(playerid, classid)
- {
- return 1;
- }
- #endif
- public OnPlayerConnect(playerid)
- {
- AntiDeAMX();
- Data[playerid][stav] = MODE_NONE;
- Data[playerid][vyber_exit] = 0;
- Data[playerid][kamera_object] = CreatePlayerObject(playerid,INVISIBLE_MODEL_OBJECT,0.0,0.0,10.0,0.0,0.0,0.0,0.0);
- new nazov[9][] = {
- "Editovat~n~polohu",
- "Zmenit~n~model",
- "Vymazat~n~objekt",
- "Oznacit~n~objekt",
- "Novy~n~objekt",
- "List~n~objektov",
- "Nacitat~n~mapu",
- "Ulozit~n~mapu",
- "Test~n~mapy"
- };
- for(new i = 0; i < MAX_TLACITOK; i++){
- new PlayerText:var = CreatePlayerTextDraw(playerid,50+(i*67.5),425,nazov[i]);
- PlayerTextDrawLetterSize(playerid,var,0.25,1.0);
- PlayerTextDrawTextSize(playerid,var,30,50);
- PlayerTextDrawAlignment(playerid,var,2);
- PlayerTextDrawColor(playerid,var,0xFFFFFFFF); // 0xAAAAAAFF
- PlayerTextDrawUseBox(playerid,var,true);
- PlayerTextDrawBoxColor(playerid,var,0x00000066); // 0x44444466
- PlayerTextDrawSetShadow(playerid,var,0);
- PlayerTextDrawSetOutline(playerid,var,0);
- PlayerTextDrawFont(playerid,var,1);
- PlayerTextDrawSetSelectable(playerid,var,1);
- if(i == 0) Data[playerid][menu_txd] = var;
- }
- for(new i = 0; i < sizeof(Object_modelid[]); i++)
- Object_modelid[playerid][i] = 0;
- return 1;
- }
- public OnPlayerDisconnect(playerid, reason)
- {
- for(new i = 0; i < MAX_OBJECTS; i++)
- DestroyPlayerObject(playerid,i);
- for(new i = _:Data[playerid][menu_txd]; i < _:Data[playerid][menu_txd]+MAX_TLACITOK; i++){
- PlayerTextDrawHide(playerid,PlayerText:i);
- PlayerTextDrawDestroy(playerid,PlayerText:i);
- }
- return 1;
- }
- public OnPlayerSpawn(playerid)
- {
- if(Data[playerid][stav] == MODE_TEST){
- new Float:x,Float:y,Float:z;
- GetPlayerObjectPos(playerid,Data[playerid][kamera_object],x,y,z);
- SetPlayerPos(playerid,x,y,z);
- }else{
- EditMode(playerid);
- }
- return 1;
- }
- public OnPlayerDeath(playerid, killerid, reason)
- {
- return 1;
- }
- public OnVehicleSpawn(vehicleid)
- {
- return 1;
- }
- public OnVehicleDeath(vehicleid, killerid)
- {
- return 1;
- }
- public OnPlayerText(playerid, text[])
- {
- return 1;
- }
- public OnPlayerCommandText(playerid, cmdtext[])
- {
- if(!strcmp(cmdtext, "/restart", true,8))
- {
- SpawnPlayer(playerid);
- return 1;
- }
- if(!strcmp(cmdtext, "/koniec", true,7))
- {
- if(Data[playerid][stav] == MODE_TEST){
- EditMode(playerid);
- }
- return 1;
- }
- /* if(!strcmp(cmdtext, "/load", true))
- {
- ShowPlayerDialog(playerid,DIALOG_ID+1,DIALOG_STYLE_INPUT,"Načítanie mapy","Zadaj názov mapy:","Načítať","Skončiť");
- return 1;
- }
- if(!strcmp(cmdtext, "/uloz", true))
- {
- ShowPlayerDialog(playerid,DIALOG_ID+2,DIALOG_STYLE_INPUT,"Uloženie mapy","Zadaj názov mapy:","Uložiť","Skončiť");
- return 1;
- }
- if(!strcmp(cmdtext, "/vytvor", true))
- {
- ShowPlayerDialog(playerid,DIALOG_ID+3,DIALOG_STYLE_INPUT,"Nový objekt","Zadaj ID objektu:","Vytvoriť","Skončiť");
- return 1;
- }
- if(!strcmp(cmdtext, "/delete", true))
- {
- new oid = GetPVarInt(playerid,OZNACENY_OBJEKT);
- if(oid <= 0) return SendClientMessage(playerid,0xFF00FFFF,"nemas oznaceny objekt");
- DestroyPlayerObject(playerid,oid);
- Object_modelid[playerid][oid-1] = 0;
- CancelEdit(playerid);
- DeletePVar(playerid,OZNACENY_OBJEKT);
- DeletePVar(playerid,VYBER_OBJEKTU);
- return 1;
- }*/
- return 0;
- }
- public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
- {
- return 1;
- }
- public OnPlayerExitVehicle(playerid, vehicleid)
- {
- return 1;
- }
- public OnPlayerStateChange(playerid, newstate, oldstate)
- {
- return 1;
- }
- public OnPlayerEnterCheckpoint(playerid)
- {
- return 1;
- }
- public OnPlayerLeaveCheckpoint(playerid)
- {
- return 1;
- }
- public OnPlayerEnterRaceCheckpoint(playerid)
- {
- return 1;
- }
- public OnPlayerLeaveRaceCheckpoint(playerid)
- {
- return 1;
- }
- public OnRconCommand(cmd[])
- {
- return 1;
- }
- public OnPlayerRequestSpawn(playerid)
- {
- return 1;
- }
- public OnObjectMoved(objectid)
- {
- return 1;
- }
- public OnPlayerObjectMoved(playerid, objectid)
- {
- return 1;
- }
- public OnPlayerPickUpPickup(playerid, pickupid)
- {
- return 1;
- }
- public OnVehicleMod(playerid, vehicleid, componentid)
- {
- return 1;
- }
- public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
- {
- return 1;
- }
- public OnVehicleRespray(playerid, vehicleid, color1, color2)
- {
- return 1;
- }
- public OnPlayerSelectedMenuRow(playerid, row)
- {
- return 1;
- }
- public OnPlayerExitedMenu(playerid)
- {
- return 1;
- }
- public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
- {
- return 1;
- }
- public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
- {
- if(newkeys == KEY_SECONDARY_ATTACK){
- /*if(Data[playerid][stav] == MODE_EDIT){
- TestMode(playerid);
- }else{// if(Data[playerid][stav] == MODE_TEST){
- EditMode(playerid);
- }*/
- if(Data[playerid][stav] == MODE_EDIT){
- /*if(GetPVarInt(playerid,VYBER_OBJEKTU)){
- if(Data[playerid][menu_stav] != 0) goto Vyber_objektu;
- OdznacitObjekt(playerid);
- ShowMenu(playerid,0);
- CancelEdit(playerid);
- DeletePVar(playerid,VYBER_OBJEKTU);
- }else{
- Vyber_objektu:
- OdznacitObjekt(playerid);
- ShowMenu(playerid,0);
- SetPVarInt(playerid,VYBER_OBJEKTU,1);
- SelectObject(playerid);
- }*/
- if(Data[playerid][menu_stav] == 0){
- if(GetPVarInt(playerid,OZNACENY_OBJEKT))
- ShowMenu(playerid,1);
- else
- ShowMenu(playerid,6);
- }else{
- //OdznacitObjekt(playerid);
- //CancelEdit(playerid);
- // CancelSelectTextDraw(playerid);
- // EditMode(playerid);
- }
- }
- }
- /* if(newkeys == KEY_SECONDARY_ATTACK){
- if(GetPVarInt(playerid,VYBER_OBJEKTU)){
- DeletePVar(playerid,VYBER_OBJEKTU);
- CancelEdit(playerid);
- }else{
- SetPVarInt(playerid,VYBER_OBJEKTU,1);
- SelectObject(playerid);
- }
- }*/
- return 1;
- }
- public OnRconLoginAttempt(ip[], password[], success)
- {
- return 1;
- }
- public OnPlayerUpdate(playerid)
- {
- if(Data[playerid][stav] == MODE_EDIT)
- {
- new keys,ud,lr;
- GetPlayerKeys(playerid,keys,ud,lr);
- if(Data[playerid][smer_pohybu] && (GetTickCount() - Data[playerid][cas_pohyb] > 100))
- {
- // If the last move was > 100ms ago, process moving the object the players camera is attached to
- MoveCamera(playerid);
- }
- // Is the players current key state different than their last keystate?
- if(Data[playerid][ud_stare] != ud || Data[playerid][lr_stare] != lr)
- {
- if((Data[playerid][ud_stare] != 0 || Data[playerid][lr_stare] != 0) && ud == 0 && lr == 0)
- { // All keys have been released, stop the object the camera is attached to and reset the acceleration multiplier
- StopPlayerObject(playerid, Data[playerid][kamera_object]);
- Data[playerid][smer_pohybu] = 0;
- Data[playerid][rychlost] = 0.0;
- }
- else
- { // Indicates a new key has been pressed
- // Get the direction the player wants to move as indicated by the keys
- Data[playerid][smer_pohybu] = GetMoveDirectionFromKeys(ud, lr);
- // Process moving the object the players camera is attached to
- MoveCamera(playerid);
- }
- }
- Data[playerid][ud_stare] = ud; Data[playerid][lr_stare] = lr; // Store current keys pressed for comparison next update
- return 0;
- }
- return 1;
- }
- public OnPlayerStreamIn(playerid, forplayerid)
- {
- return 1;
- }
- public OnPlayerStreamOut(playerid, forplayerid)
- {
- return 1;
- }
- public OnVehicleStreamIn(vehicleid, forplayerid)
- {
- return 1;
- }
- public OnVehicleStreamOut(vehicleid, forplayerid)
- {
- return 1;
- }
- public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
- {
- switch(dialogid){
- case DIALOG_ID:{
- if(GetPVarInt(playerid,OZNACENY_OBJEKT))
- ShowMenu(playerid,1);
- else
- ShowMenu(playerid,6);
- }
- case DIALOG_ID+1:{ // načítanie
- if(response){
- if(!strlen(inputtext)) return ShowPlayerDialog(playerid,DIALOG_ID+1,DIALOG_STYLE_INPUT,"Načítanie mapy","Zadaj názov mapy:\n(ak chceš prázdnu mapu zadaj \"nová\")","Načítať","Skončiť");
- if(!strcmp(inputtext,"nová") || !strcmp(inputtext,"nova")){
- for(new i = 0; i < MAX_OBJECTS; i++)
- if(i != Data[playerid][kamera_object]){
- DestroyPlayerObject(playerid,i);
- Object_modelid[playerid][i] = 0;
- }
- GameTextForPlayer(playerid,"~g~Nova mapa nacitana",2000,4);
- DeletePVar(playerid,OZNACENY_OBJEKT);
- ShowMenu(playerid,6);
- return 1;
- }
- new cesta[128];
- format(cesta,sizeof(cesta),"/mapy/%s.map",inputtext);
- if(!fexist(cesta)) return ShowPlayerDialog(playerid,DIALOG_ID+1,DIALOG_STYLE_INPUT,"Načítanie mapy","Mapa s týmto názvom neexistuje!\nZadaj názov mapy:\n(ak chceš prázdnu mapu zadaj \"nová\")","Načítať","Skončiť");
- for(new i = 0; i < MAX_OBJECTS; i++)
- if(i != Data[playerid][kamera_object]){
- DestroyPlayerObject(playerid,i);
- Object_modelid[playerid][i] = 0;
- }
- new File:subor = fopen(cesta,io_read),riadok[256];
- while(fread(subor,riadok)){
- new idx = strfind(riadok,"CreateObject(")+13,model,Float:p[3],Float:r[3],Float:vzd;
- model = strval(strtok(riadok,idx,','));
- p[0] = floatstr(strtok(riadok,idx,','));
- p[1] = floatstr(strtok(riadok,idx,','));
- p[2] = floatstr(strtok(riadok,idx,','));
- r[0] = floatstr(strtok(riadok,idx,','));
- r[1] = floatstr(strtok(riadok,idx,','));
- r[2] = floatstr(strtok(riadok,idx,','));
- vzd = floatstr(strtok(riadok,idx,')'));
- // printf("%i %f %f %f, %f %f %f, %f",model,p[0],p[1],p[2],r[0],r[1],r[2],vzd);
- Object_modelid[playerid][CreatePlayerObject(playerid,model,p[0],p[1],p[2],r[0],r[1],r[2],vzd)-1] = model;
- }
- fclose(subor);
- GameTextForPlayer(playerid,"~g~Mapa nacitana",2000,4);
- }
- if(GetPVarInt(playerid,OZNACENY_OBJEKT))
- ShowMenu(playerid,1);
- else
- ShowMenu(playerid,6);
- return 1;
- }
- case DIALOG_ID+2:{
- if(response){
- new cesta[128];
- format(cesta,sizeof(cesta),"/mapy/%s.map",inputtext);
- new File:subor = fopen(cesta,io_write),riadok[256];
- for(new i = 0; i < MAX_OBJECTS; i++){
- if(i != Data[playerid][kamera_object]){
- if(IsValidPlayerObject(playerid,i)){
- new Float:p[3],Float:r[3];
- GetPlayerObjectPos(playerid,i,p[0],p[1],p[2]);
- GetPlayerObjectRot(playerid,i,r[0],r[1],r[2]);
- // printf("save %i %f %f %f %f %f %f",i,p[0],p[1],p[2],r[0],r[1],r[2]);
- format(riadok,sizeof(riadok),"CreateObject(%i,%f,%f,%f,%f,%f,%f,500.0);\r\n",Object_modelid[playerid][i-1],p[0],p[1],p[2],r[0],r[1],r[2]);
- fwrite(subor,riadok);
- }
- }
- }
- fclose(subor);
- GameTextForPlayer(playerid,"~g~Mapa ulozena",2000,4);
- }
- if(GetPVarInt(playerid,OZNACENY_OBJEKT))
- ShowMenu(playerid,1);
- else
- ShowMenu(playerid,6);
- }
- case DIALOG_ID+3:{
- if(response){
- new id = strval(inputtext);
- if(id < 0 || id > 20000){
- if(GetPVarInt(playerid,ZMENA_MODELU))
- ShowPlayerDialog(playerid,DIALOG_ID+3,DIALOG_STYLE_INPUT,"Zmeniť model","Zadaj ID objektu:","Zmeniť","Skončiť");
- else
- ShowPlayerDialog(playerid,DIALOG_ID+3,DIALOG_STYLE_INPUT,"Nový objekt","Zadaj ID objektu:","Vytvoriť","Skončiť");
- return 1;
- }
- new Float:x,Float:y,Float:z,Float:rx,Float:ry,Float:rz;
- if(GetPVarInt(playerid,ZMENA_MODELU)){
- new oid = GetPVarInt(playerid,OZNACENY_OBJEKT);
- if(oid != 0){
- GetPlayerObjectPos(playerid,oid,x,y,z);
- GetPlayerObjectRot(playerid,oid,rx,ry,rz);
- DestroyPlayerObject(playerid,oid);
- }
- }else{
- new Float:vx,Float:vy,Float:vz;
- GetPlayerCameraPos(playerid,x,y,z);
- GetPlayerCameraFrontVector(playerid,vx,vy,vz);
- x += vx*VZDIALENOST_NOVEHO_OBJEKTU;
- y += vy*VZDIALENOST_NOVEHO_OBJEKTU;
- z += vz*VZDIALENOST_NOVEHO_OBJEKTU;
- }
- new oid = CreatePlayerObject(playerid,id,x,y,z,rx,ry,rz,500.0);
- if(oid == INVALID_OBJECT_ID){
- if(GetPVarInt(playerid,ZMENA_MODELU))
- ShowPlayerDialog(playerid,DIALOG_ID,DIALOG_STYLE_MSGBOX,"Zmeniť model","Nemôžeš vytvoriť viac objektov.","Skončiť","");
- else
- ShowPlayerDialog(playerid,DIALOG_ID,DIALOG_STYLE_MSGBOX,"Nový objekt","Nemôžeš vytvoriť viac objektov.","Skončiť","");
- return 1;
- }
- Object_modelid[playerid][oid-1] = id;
- OznacitObjekt(playerid,oid,x,y,z);
- }
- if(GetPVarInt(playerid,OZNACENY_OBJEKT))
- ShowMenu(playerid,1);
- else
- ShowMenu(playerid,6);
- }
- case DIALOG_ID+4:{ // list
- if(response){
- if(!strcmp(inputtext,"ďalšia strana",true,13)){
- new str[4050],id = 0,prvy_obj = GetPVarInt(playerid,LIST_POSLEDNY_OBJEKT);
- DeletePVar(playerid,LIST_POSLEDNY_OBJEKT);
- SetPVarInt(playerid,LIST_PRVY_OBJEKT,prvy_obj);
- for(new i = 1; i < MAX_OBJECTS; i++){
- if(i != Data[playerid][kamera_object]){
- if(IsValidPlayerObject(playerid,i)){ // 13+3+5 = 21 190ks
- id++;
- if(id >= prvy_obj){
- if(id >= prvy_obj+190){
- strcat(str,"ďalšia strana");
- SetPVarInt(playerid,LIST_POSLEDNY_OBJEKT,id);
- break;
- }
- format(str,sizeof(str),"%sID:%i model: %i\n",str,id,Object_modelid[playerid][i-1]);
- }
- }
- }
- }
- if(id == 0)
- ShowPlayerDialog(playerid,DIALOG_ID,DIALOG_STYLE_MSGBOX,"List objektov","Momentálne nemáš vytvorený žiadny objekt.","Skončiť","");
- else
- ShowPlayerDialog(playerid,DIALOG_ID+4,DIALOG_STYLE_LIST,"List objektov",str,"Označiť","Skončiť");
- }else{
- if(GetPVarInt(playerid,OZNACENY_OBJEKT))
- OdznacitObjekt(playerid);
- new id = 0,prvy_obj = GetPVarInt(playerid,LIST_PRVY_OBJEKT);
- for(new i = 1; i < MAX_OBJECTS; i++){
- if(i != Data[playerid][kamera_object]){
- if(IsValidPlayerObject(playerid,i)){
- id++;
- if(id == prvy_obj+listitem){
- OznacitObjekt(playerid,i);
- break;
- }
- }
- }
- }
- }
- }
- if(GetPVarInt(playerid,OZNACENY_OBJEKT))
- ShowMenu(playerid,1);
- else
- ShowMenu(playerid,6);
- }
- }
- return 0;
- }
- public OnPlayerClickPlayer(playerid, clickedplayerid, source)
- {
- return 1;
- }
- OznacitObjekt(playerid, objectid, Float:x = 0.0, Float:y = 0.0, Float:z = 0.0)
- {
- SetPVarInt(playerid,OZNACENY_OBJEKT,objectid);
- if(x+y+z == 0.0)
- GetPlayerObjectPos(playerid,objectid,x,y,z);
- SetPlayerMapIcon(playerid,0,x,y,z,0,0xFF0000FF,MAPICON_GLOBAL);
- for(new i = 0; i < 15; i++){
- SetPlayerObjectMaterial(playerid,objectid,i,18749,"MatTextures","SAMPRed",0);
- }
- }
- OdznacitObjekt(playerid)
- {
- new oid = GetPVarInt(playerid,OZNACENY_OBJEKT);
- RemovePlayerMapIcon(playerid,0);
- DeletePVar(playerid,OZNACENY_OBJEKT);
- if(oid != 0){
- new model = Object_modelid[playerid][oid-1],Float:p[3],Float:r[3];
- GetPlayerObjectPos(playerid,oid,p[0],p[1],p[2]);
- GetPlayerObjectRot(playerid,oid,r[0],r[1],r[2]);
- DestroyPlayerObject(playerid,oid);
- Object_modelid[playerid][CreatePlayerObject(playerid,model,p[0],p[1],p[2],r[0],r[1],r[2],500.0)-1] = model;
- }
- }
- ShowMenu(playerid,id,bool:show = true)
- {
- /* "Editovat~n~polohu",0
- "Novy~n~objekt", 1
- "Zmenit~n~model", 2
- "Vymazat~n~objekt", 3
- "List~n~objektov", 4
- "Oznacit~n~objekt",5
- "Nacitat~n~mapu", 6
- "Ulozit~n~mapu", 7
- "Test~n~mapy" 8
- "Editovat~n~polohu",0
- "Zmenit~n~model", 1
- "Vymazat~n~objekt", 2
- "Oznacit~n~objekt", 3
- "Novy~n~objekt", 4
- "List~n~objektov", 5
- "Nacitat~n~mapu", 6
- "Ulozit~n~mapu", 7
- "Test~n~mapy" 8
- */
- for(new i = _:Data[playerid][menu_txd]; i < _:Data[playerid][menu_txd]+MAX_TLACITOK; i++){
- switch(id){
- case 0:{
- PlayerTextDrawColor(playerid,PlayerText:i,0xAAAAAAFF); // 0xAAAAAAFF
- PlayerTextDrawBoxColor(playerid,PlayerText:i,0x44444466); // 0x44444466
- PlayerTextDrawSetSelectable(playerid,PlayerText:i,0);
- PlayerTextDrawShow(playerid,PlayerText:i);
- }
- case 1:{
- PlayerTextDrawColor(playerid,PlayerText:i,0xFFFFFFFF); // 0xAAAAAAFF
- PlayerTextDrawBoxColor(playerid,PlayerText:i,0x00000066); // 0x44444466
- PlayerTextDrawSetSelectable(playerid,PlayerText:i,1);
- PlayerTextDrawShow(playerid,PlayerText:i);
- }
- case 2:{ // skryť
- PlayerTextDrawSetSelectable(playerid,PlayerText:i,0);
- PlayerTextDrawHide(playerid,PlayerText:i);
- }
- case 6:{
- switch(i - _:Data[playerid][menu_txd]){
- case 0..2:{
- PlayerTextDrawColor(playerid,PlayerText:i,0xAAAAAAFF); // 0xAAAAAAFF
- PlayerTextDrawBoxColor(playerid,PlayerText:i,0x44444466); // 0x44444466
- PlayerTextDrawSetSelectable(playerid,PlayerText:i,0);
- }default:{
- PlayerTextDrawColor(playerid,PlayerText:i,0xFFFFFFFF); // 0xAAAAAAFF
- PlayerTextDrawBoxColor(playerid,PlayerText:i,0x00000066); // 0x44444466
- PlayerTextDrawSetSelectable(playerid,PlayerText:i,1);
- }
- }
- PlayerTextDrawShow(playerid,PlayerText:i);
- }
- }
- }
- if(show){
- if(id == 0)
- CancelSelectTextDraw(playerid);
- else{
- SelectTextDraw(playerid,0x00FF00FF);
- Data[playerid][vyber_exit] = 1;
- }
- }
- Data[playerid][menu_stav] = id;
- }
- public OnPlayerSelectObject(playerid, type, objectid, modelid, Float:fX, Float:fY, Float:fZ)
- {
- if(type == SELECT_OBJECT_PLAYER_OBJECT){
- OznacitObjekt(playerid,objectid,fX,fY,fZ);
- // EditPlayerObject(playerid, objectid);
- ShowMenu(playerid,1);
- }
- return 1;
- }
- public OnPlayerEditObject(playerid, playerobject, objectid, response, Float:fX, Float:fY, Float:fZ, Float:fRotX, Float:fRotY, Float:fRotZ)
- {
- if(playerobject){
- if(response == EDIT_RESPONSE_FINAL){
- SetPlayerObjectPos(playerid,objectid,fX,fY,fZ);
- SetPlayerObjectRot(playerid,objectid,fRotX,fRotY,fRotZ);
- ShowMenu(playerid,1);
- }else if(response == EDIT_RESPONSE_CANCEL){
- new Float:p[3],Float:r[3];
- GetPlayerObjectPos(playerid,objectid,p[0],p[1],p[2]);
- GetPlayerObjectRot(playerid,objectid,r[0],r[1],r[2]);
- SetPlayerObjectPos(playerid,objectid,p[0],p[1],p[2]);
- SetPlayerObjectRot(playerid,objectid,r[0],r[1],r[2]);
- }
- }
- }
- public OnPlayerClickPlayerTextDraw(playerid, PlayerText:playertextid)
- {
- if(Data[playerid][stav] == MODE_EDIT){
- Data[playerid][vyber_exit] = 0;
- switch(_:(playertextid-Data[playerid][menu_txd])){
- case 0:{ // editovať
- ShowMenu(playerid,0,false);
- EditPlayerObject(playerid, GetPVarInt(playerid,OZNACENY_OBJEKT));
- }
- case 1:{ // zmeniť
- SetPVarInt(playerid,ZMENA_MODELU,1);
- ShowPlayerDialog(playerid,DIALOG_ID+3,DIALOG_STYLE_INPUT,"Zmeniť model","Zadaj ID objektu:","Zmeniť","Skončiť");
- }
- case 2:{ // zmazať
- new oid = GetPVarInt(playerid,OZNACENY_OBJEKT);
- DestroyPlayerObject(playerid,oid);
- Object_modelid[playerid][oid-1] = 0;
- OdznacitObjekt(playerid);
- ShowMenu(playerid,6);
- }
- case 3:{ // označiť
- OdznacitObjekt(playerid);
- ShowMenu(playerid,0,false);
- SelectObject(playerid);
- Data[playerid][vyber_exit] = 2;
- }
- case 4:{ // nový objekt
- DeletePVar(playerid,ZMENA_MODELU);
- ShowPlayerDialog(playerid,DIALOG_ID+3,DIALOG_STYLE_INPUT,"Nový objekt","Zadaj ID objektu:","Vytvoriť","Skončiť");
- }
- case 5:{ // list
- DeletePVar(playerid,LIST_POSLEDNY_OBJEKT);
- SetPVarInt(playerid,LIST_PRVY_OBJEKT,1);
- new str[4000],id = 0;
- for(new i = 1; i < MAX_OBJECTS; i++){
- if(i != Data[playerid][kamera_object]){
- if(IsValidPlayerObject(playerid,i)){ // 13+3+5 = 21 190ks
- id++;
- if(id >= 190){
- strcat(str,"ďalšia strana");
- SetPVarInt(playerid,LIST_POSLEDNY_OBJEKT,id);
- break;
- }
- format(str,sizeof(str),"%sID:%i model: %i\n",str,id,Object_modelid[playerid][i-1]);
- }
- }
- }
- if(id == 0)
- ShowPlayerDialog(playerid,DIALOG_ID,DIALOG_STYLE_MSGBOX,"List objektov","Momentálne nemáš vytvorený žiadny objekt.","Skončiť","");
- else
- ShowPlayerDialog(playerid,DIALOG_ID+4,DIALOG_STYLE_LIST,"List objektov",str,"Označiť","Skončiť");
- }
- case 6:{ // načítať
- ShowPlayerDialog(playerid,DIALOG_ID+1,DIALOG_STYLE_INPUT,"Načítanie mapy","Zadaj názov mapy:\n(ak chceš prázdnu mapu zadaj \"nová\")","Načítať","Skončiť");
- }
- case 7:{ // uložiť
- ShowPlayerDialog(playerid,DIALOG_ID+2,DIALOG_STYLE_INPUT,"Uloženie mapy","Zadaj názov mapy:","Uložiť","Skončiť");
- }
- case 8:{ // test
- if(Data[playerid][stav] == MODE_EDIT)
- TestMode(playerid);
- }
- }
- }
- return 1;
- }
- public OnPlayerClickTextDraw(playerid, Text:clickedid)
- {
- if(Data[playerid][stav] == MODE_EDIT){
- if(_:clickedid == 65535){
- switch(Data[playerid][vyber_exit]){
- case 1:{
- if(Data[playerid][menu_stav] != 0){
- Data[playerid][vyber_exit] = 0;
- ShowMenu(playerid,0,false);
- }
- }
- case 2:{
- Data[playerid][vyber_exit] = 0;
- }
- default:{}
- }
- return 1;
- }
- }
- return 1;
- }
- stock GetMoveDirectionFromKeys(ud, lr)
- {
- new direction = 0;
- if(lr < 0)
- {
- if(ud < 0) direction = MOVE_FORWARD_LEFT; // Up & Left key pressed
- else if(ud > 0) direction = MOVE_BACK_LEFT; // Back & Left key pressed
- else direction = MOVE_LEFT; // Left key pressed
- }
- else if(lr > 0) // Right pressed
- {
- if(ud < 0) direction = MOVE_FORWARD_RIGHT; // Up & Right key pressed
- else if(ud > 0) direction = MOVE_BACK_RIGHT; // Back & Right key pressed
- else direction = MOVE_RIGHT; // Right key pressed
- }
- else if(ud < 0) direction = MOVE_FORWARD; // Up key pressed
- else if(ud > 0) direction = MOVE_BACK; // Down key pressed
- return direction;
- }
- //--------------------------------------------------
- stock MoveCamera(playerid)
- {
- new Float:FV[3], Float:CP[3];
- GetPlayerCameraPos(playerid, CP[0], CP[1], CP[2]); // Cameras position in space
- GetPlayerCameraFrontVector(playerid, FV[0], FV[1], FV[2]); // Where the camera is looking at
- // Increases the acceleration multiplier the longer the key is held
- if(Data[playerid][rychlost] <= 1) Data[playerid][rychlost] += ACCEL_RATE;
- // Determine the speed to move the camera based on the acceleration multiplier
- new Float:speed = MOVE_SPEED * Data[playerid][rychlost];
- // Calculate the cameras next position based on their current position and the direction their camera is facing
- new Float:X, Float:Y, Float:Z;
- GetNextCameraPosition(Data[playerid][smer_pohybu], CP, FV, X, Y, Z);
- MovePlayerObject(playerid, Data[playerid][kamera_object], X, Y, Z, speed);
- // Store the last time the camera was moved as now
- Data[playerid][cas_pohyb] = GetTickCount();
- return 1;
- }
- //--------------------------------------------------
- stock GetNextCameraPosition(move_smer_pohybu, Float:CP[3], Float:FV[3], &Float:X, &Float:Y, &Float:Z)
- {
- // Calculate the cameras next position based on their current position and the direction their camera is facing
- #define OFFSET_X (FV[0]*6000.0)
- #define OFFSET_Y (FV[1]*6000.0)
- #define OFFSET_Z (FV[2]*6000.0)
- switch(move_smer_pohybu)
- {
- case MOVE_FORWARD:
- {
- X = CP[0]+OFFSET_X;
- Y = CP[1]+OFFSET_Y;
- Z = CP[2]+OFFSET_Z;
- }
- case MOVE_BACK:
- {
- X = CP[0]-OFFSET_X;
- Y = CP[1]-OFFSET_Y;
- Z = CP[2]-OFFSET_Z;
- }
- case MOVE_LEFT:
- {
- X = CP[0]-OFFSET_Y;
- Y = CP[1]+OFFSET_X;
- Z = CP[2];
- }
- case MOVE_RIGHT:
- {
- X = CP[0]+OFFSET_Y;
- Y = CP[1]-OFFSET_X;
- Z = CP[2];
- }
- case MOVE_BACK_LEFT:
- {
- X = CP[0]+(-OFFSET_X - OFFSET_Y);
- Y = CP[1]+(-OFFSET_Y + OFFSET_X);
- Z = CP[2]-OFFSET_Z;
- }
- case MOVE_BACK_RIGHT:
- {
- X = CP[0]+(-OFFSET_X + OFFSET_Y);
- Y = CP[1]+(-OFFSET_Y - OFFSET_X);
- Z = CP[2]-OFFSET_Z;
- }
- case MOVE_FORWARD_LEFT:
- {
- X = CP[0]+(OFFSET_X - OFFSET_Y);
- Y = CP[1]+(OFFSET_Y + OFFSET_X);
- Z = CP[2]+OFFSET_Z;
- }
- case MOVE_FORWARD_RIGHT:
- {
- X = CP[0]+(OFFSET_X + OFFSET_Y);
- Y = CP[1]+(OFFSET_Y - OFFSET_X);
- Z = CP[2]+OFFSET_Z;
- }
- }
- }
- //--------------------------------------------------
- stock TestMode(playerid)
- {
- Data[playerid][stav] = MODE_TEST;
- new Float:x,Float:y,Float:z;
- StopPlayerObject(playerid,Data[playerid][kamera_object]);
- GetPlayerObjectPos(playerid,Data[playerid][kamera_object],x,y,z);
- SetSpawnInfo(playerid,0,0,x,y,z,0.0,0,0,0,0,0,0);
- ShowMenu(playerid,2,false);
- CancelEdit(playerid);
- CancelSelectTextDraw(playerid);
- TogglePlayerSpectating(playerid, false);
- return 1;
- }
- //--------------------------------------------------
- stock EditMode(playerid)
- {
- /* new Float:X, Float:Y, Float:Z;
- GetPlayerPos(playerid, X, Y, Z);*/
- // if(Data[playerid][kamera_object] == INVALID_OBJECT_ID)
- // Data[playerid][kamera_object] = CreatePlayerObject(playerid,19300,0.0,0.0,10.0,0.0,0.0,0.0);
- // else
- // SetObjectPos(Data[playerid][kamera_object],X,Y,Z);
- Data[playerid][lr_stare] = 0;
- Data[playerid][ud_stare] = 0;
- Data[playerid][smer_pohybu] = 0;
- Data[playerid][cas_pohyb] = 0;
- Data[playerid][rychlost] = 0.0;
- TogglePlayerSpectating(playerid, true);
- AttachCameraToPlayerObject(playerid, Data[playerid][kamera_object]);
- Data[playerid][stav] = MODE_EDIT;
- ShowMenu(playerid,0);
- return 1;
- }
- //--------------------------------------------------
- stock strtok(const str[], &index, seperator=' ')
- {
- new length = strlen(str);
- new offset = index;
- new result[100];
- while ((index < length) && (str[index] != seperator) && ((index - offset) < (sizeof(result) - 1)))
- {
- result[index - offset] = str[index];
- index++;
- }
- result[index - offset] = EOS;
- if ((index < length) && (str[index] == seperator))
- {
- index++;
- }
- return result;
- }
- //--------------------------------------------------
- AntiDeAMX()
- {
- new a[][] =
- {
- "Unarmed (Fist)",
- "Brass K"
- };
- #pragma unused a
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement