Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <a_samp>
- #include <wcmd>
- #include <dini>
- //Dialoge
- #define WBAUM_HOME 1000
- #define WBAUM_DELETE 1001
- #define WBAUM_EDIT 1002
- #define WBAUM_EDIT_MANUEL 1003
- #define WBAUM_EDIT_MANUEL1 1004
- #define WBAUM_EDIT_MANUEL2 1005
- #define MAX_PLAYER_IP 64
- #define MAX_BAUM 5
- #define OBJECT_MODEL_BAUM 19076
- #define WBAUM_DINI "/WBAUM/%d.txt"
- new MAXPLAYERS;
- new PIP[MAX_PLAYERS][MAX_PLAYER_IP];
- new PlayerEditManuelObject[MAX_PLAYERS];
- new CanSelectedObject[MAX_PLAYERS];
- new PlayerSelectedObject[MAX_PLAYERS];
- enum wbaumenum
- {
- id,
- baum_model,
- Float:baum_posx,
- Float:baum_posy,
- Float:baum_posz,
- Float:baum_rotx,
- Float:baum_roty,
- Float:baum_rotz,
- baum_edit
- }
- new wbaum[MAX_BAUM][wbaumenum];
- #define WELCOME_MESSAGE "[W_BAUM INFO]Hallo, mit dem Befehl '/wbaum', kannst du Weinachtsbäume erstellen, bearbeiten und Löschen"
- #define INVALID_OBJECT_MESSAGE "[W_BAUM ERROR]Du hast eine falsche Onjekt ID angegeben oder in der zwischen Zeit wurde das Objekt, von ein Kollegen von dir gelöscht"
- #define OBJECT_SAVED "[W_BAUM INFO] Der Weinachtsbaum %d wurde jetzt gespeichert, du kannst ihm jetzt wieder bearbeiten"
- #define OBJECT_EDIT_NOT_SAVED "[W_BAUM ERROR] Der Weinachtsbaum, wurde innerhalb von den Letzten 5 Minuten schon bearbeitet."
- #define OBJECT_EDIT_NO_BY_PLAYER "[W_BAUM ERROR]Dieses Object wurde nicht von dir Bearbeitet"
- #define SELECT_OBJECT "[W_BAUM INFO]Wähle nun das Objekt aus, was du bearbeiten möchtest"
- #define OBJECT_EDIT_BY_PLAYER "[W_BAUM INFO]Du hast erfolgreich den %d Weinachtsbaum bearbeitet"
- #define OBJECT_NOT_FREE_SLOT "[W_Baum ERROR]Es sind keine Freien Slots mehr verfügbar, bitte im Filterscript 'MAX_BAUM' anpassen!"
- #define OBJECT_DELETE "[W_Baum Info]Der Weinachtsbaum wurde gelöscht"
- public OnFilterScriptInit()
- {
- print("\n--------------------------------------");
- print(" Blank Filterscript by your name here");
- print("--------------------------------------\n");
- MAXPLAYERS = GetMaxPlayers();
- LoadWBaum();
- return 1;
- }
- public OnFilterScriptExit()
- {
- return 1;
- }
- public OnPlayerConnect(playerid)
- {
- GetPlayerIp(playerid,PIP[playerid],MAX_PLAYER_IP);
- return 1;
- }
- public OnRconLoginAttempt(ip[], password[], success)
- {
- new playerid;
- for(new i=0; i<MAXPLAYERS; i++)
- {
- if(!strcmp(PIP[i],ip)) continue;
- playerid = i;
- break;
- }
- if(success) SendClientMessage(playerid,-1,WELCOME_MESSAGE);
- return 1;
- }
- public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
- {
- if(dialogid == WBAUM_HOME) return DIALOG_WBAUM_HOME(playerid,response,listitem);
- if(dialogid == WBAUM_DELETE) return DIALOG_WBAUM_DELETE(playerid,response);
- if(dialogid == WBAUM_EDIT) return DIALOG_WBAUM_EDIT(playerid,response,listitem);
- if(dialogid == WBAUM_EDIT_MANUEL) return DIALOG_WBAUM_EDIT_MANUEL(playerid,response);
- if(dialogid == WBAUM_EDIT_MANUEL1) return DIALOG_WBAUM_EDIT_MANUEL1(playerid,response,listitem);
- if(dialogid == WBAUM_EDIT_MANUEL2) return DIALOG_WBAUM_EDIT_MANUEL2(playerid,response,inputtext);
- return 1;
- }
- public OnPlayerEditObject(playerid, playerobject, objectid, response, Float:fX, Float:fY, Float:fZ, Float:fRotX, Float:fRotY, Float:fRotZ)
- {
- printf("OnPlayerEditObject(playerid=%d, playerobject=%d, objectid=%d, response=%d, fX=%f, fY=%f, fZ=%f, fRotX=%f, fRotY=%f, fRotZ=%f)",playerid, playerobject, objectid, response, fX, fY, fZ, fRotX, fRotY, fRotZ);
- if(!playerobject)
- {
- if(!IsValidObject(objectid)) return SendClientMessage(playerid,-1, INVALID_OBJECT_MESSAGE);
- SetObjectPos(objectid, fX, fY, fZ);
- SetObjectRot(objectid, fRotX, fRotY, fRotZ);
- new i = FindWBaumbyObjectID(objectid);
- wbaum[i][baum_posx] = fX;
- wbaum[i][baum_posy] = fY;
- wbaum[i][baum_posz] = fZ;
- wbaum[i][baum_rotx] = fRotX;
- wbaum[i][baum_roty] = fRotY;
- wbaum[i][baum_rotz] = fRotZ;
- new string[128];
- format(string,128,OBJECT_EDIT_BY_PLAYER,objectid);
- SendClientMessage(playerid,-1,string);
- if(wbaum[i][baum_edit] == 0) SetTimerEx("SaveWBaum",1000*60*5,0,"dd",playerid,i);
- wbaum[i][baum_edit]=1;
- }
- return 1;
- }
- public OnPlayerSelectObject(playerid, type, objectid, modelid, Float:fX, Float:fY, Float:fZ)
- {
- new tempCanSelectedObject;
- if(CanSelectedObject[playerid] == 1 ||CanSelectedObject[playerid] == 2)
- {
- new i = FindWBaumbyObjectID(objectid);
- PlayerSelectedObject[playerid] = i;
- tempCanSelectedObject = CanSelectedObject[playerid];
- CanSelectedObject[playerid] = 0;
- CancelEdit(playerid);
- }
- if(tempCanSelectedObject == 1) return DIALOG_WBAUM_EDIT_MANUEL1(playerid,0,0,1);
- if(tempCanSelectedObject == 2) return DIALOG_WBAUM_DELETE(playerid,0,1);
- printf("OnPlayerSelectObject(playerid=%d, type=%d, objectid=%d, modelid=%d, fX=%f, fY=%f, fZ=%f)", playerid, type, objectid, modelid, fX, fY, fZ);
- if(type == SELECT_OBJECT_GLOBAL_OBJECT)
- {
- new i = FindWBaumbyObjectID(objectid);
- if(wbaum[i][baum_edit] == 1) return SendClientMessage(playerid,-1,OBJECT_EDIT_NOT_SAVED);
- EditObject(playerid, objectid);
- printf("Object ausgewählt %d",objectid);
- }
- return 1;
- }
- forward SaveWBaum(playerid,wbaumid);
- public SaveWBaum(playerid,wbaumid)
- {
- wbaum[wbaumid][baum_edit] = 0;
- new pfad[30];
- format(pfad,30,WBAUM_DINI,wbaumid);
- if(!dini_Exists(pfad)) return 1;
- dini_IntSet(pfad,"baum_model",wbaum[wbaumid][baum_model]);
- dini_FloatSet(pfad,"baum_posx",wbaum[wbaumid][baum_posx]);
- dini_FloatSet(pfad,"baum_posy",wbaum[wbaumid][baum_posy]);
- dini_FloatSet(pfad,"baum_posz",wbaum[wbaumid][baum_posz]);
- dini_FloatSet(pfad,"baum_rotx",wbaum[wbaumid][baum_rotx]);
- dini_FloatSet(pfad,"baum_roty",wbaum[wbaumid][baum_roty]);
- dini_FloatSet(pfad,"baum_rotz",wbaum[wbaumid][baum_rotz]);
- new string[128];
- format(string,128,OBJECT_SAVED,wbaumid);
- SendClientMessage(playerid,-1,string);
- return 1;
- }
- stock FindWBaumbyObjectID(objectid)
- {
- for(new i=0; i<MAX_BAUM; i++)
- {
- if(wbaum[i][id] != objectid) continue;
- return i;
- }
- return -1;
- }
- stock FindFreeWBaum()
- {
- for(new i=0; i<MAX_BAUM; i++)
- {
- if(wbaum[i][id] != 0) continue;
- return i;
- }
- return -1;
- }
- stock LoadWBaum()
- {
- for(new i=0; i<MAX_BAUM; i++)
- {
- new pfad[30];
- format(pfad,30,WBAUM_DINI,i);
- if(!dini_Exists(pfad)) continue;
- wbaum[i][baum_edit]=0;
- wbaum[i][baum_model]=dini_Int(pfad,"baum_model");
- wbaum[i][baum_posx]=dini_Float(pfad,"baum_posx");
- wbaum[i][baum_posy]=dini_Float(pfad,"baum_posy");
- wbaum[i][baum_posz]=dini_Float(pfad,"baum_posz");
- wbaum[i][baum_rotx]=dini_Float(pfad,"baum_rotx");
- wbaum[i][baum_roty]=dini_Float(pfad,"baum_roty");
- wbaum[i][baum_rotz]=dini_Float(pfad,"baum_rotz");
- wbaum[i][id]=CreateObject(wbaum[i][baum_model], wbaum[i][baum_posx], wbaum[i][baum_posy], wbaum[i][baum_posz], wbaum[i][baum_rotx], wbaum[i][baum_roty], wbaum[i][baum_rotz]);
- }
- return 1;
- }
- WhiitetiigerCommand:[playerid,params[]];wbaum
- {
- DIALOG_WBAUM_HOME(playerid,0,0,1);
- return 1;
- }
- stock DIALOG_WBAUM_HOME(playerid,response,listitem,show=0)
- {
- CanSelectedObject[playerid] = 0;
- if(show) return ShowPlayerDialog(playerid,WBAUM_HOME,DIALOG_STYLE_LIST,"Weinachtsbaum - Home","Weinachtsbaum erstellen\nWeinachtsbaum löschen\nWeinachtsbaum bearbeiten","Weiter","Abbruch");
- if(!response) return 1;
- switch(listitem)
- {
- case 0: {
- new Float:Pos[3];
- GetPlayerPos(playerid,Pos[0],Pos[1],Pos[2]);
- SetPlayerPos(playerid,Pos[0]+2,Pos[1]+2,Pos[2]);
- new i = FindFreeWBaum();
- if(i==-1) return SendClientMessage(playerid,-1,OBJECT_NOT_FREE_SLOT);
- wbaum[i][baum_edit]=0;
- wbaum[i][baum_model]=OBJECT_MODEL_BAUM;
- wbaum[i][baum_posx]=Pos[0];
- wbaum[i][baum_posy]=Pos[1];
- wbaum[i][baum_posz]=Pos[2];
- wbaum[i][baum_rotx]=0.0;
- wbaum[i][baum_roty]=0.0;
- wbaum[i][baum_rotz]=0.0;
- wbaum[i][id]=CreateObject(wbaum[i][baum_model], wbaum[i][baum_posx], wbaum[i][baum_posy], wbaum[i][baum_posz], wbaum[i][baum_rotx], wbaum[i][baum_roty], wbaum[i][baum_rotz]);
- for(new u=0; u<MAX_BAUM; u++)
- {
- new pfad[30];
- format(pfad,30,WBAUM_DINI,i);
- if(dini_Exists(pfad)) continue;
- dini_Create(pfad);
- dini_IntSet(pfad,"baum_model",wbaum[i][baum_model]);
- dini_FloatSet(pfad,"baum_posx",wbaum[i][baum_posx]);
- dini_FloatSet(pfad,"baum_posy",wbaum[i][baum_posy]);
- dini_FloatSet(pfad,"baum_posz",wbaum[i][baum_posz]);
- dini_FloatSet(pfad,"baum_rotx",wbaum[i][baum_rotx]);
- dini_FloatSet(pfad,"baum_roty",wbaum[i][baum_roty]);
- dini_FloatSet(pfad,"baum_rotz",wbaum[i][baum_rotz]);
- DIALOG_WBAUM_HOME(playerid,0,0,1);
- }
- }
- case 1: {
- CanSelectedObject[playerid] = 2;
- SendClientMessage(playerid,-1,SELECT_OBJECT);
- SelectObject(playerid);
- }
- case 2: {
- DIALOG_WBAUM_EDIT(playerid,0,0,1);
- }
- }
- return 1;
- }
- stock DIALOG_WBAUM_DELETE(playerid,response,show=0)
- {
- new i=PlayerSelectedObject[playerid];
- if(show) {
- ShowPlayerDialog(playerid,WBAUM_DELETE,DIALOG_STYLE_MSGBOX,"Weinachtsbaum - Löschen","Möchtest du diesen Weinachtsbaum wirklich Löschen,\num kein Falschen zu Löschen,\nwird dieser dir jetzt per Checkpoint gezeigt.","Ja","Zurück");
- return SetPlayerCheckpoint(playerid,wbaum[i][baum_posx],wbaum[i][baum_posy],wbaum[i][baum_posz],5.0);
- }
- if(!response) return DIALOG_WBAUM_HOME(playerid,0,0,1);
- wbaum[i][baum_edit]=0;
- wbaum[i][baum_model]=0;
- wbaum[i][baum_posx]=0.0;
- wbaum[i][baum_posy]=0.0;
- wbaum[i][baum_posz]=0.0;
- wbaum[i][baum_rotx]=0.0;
- wbaum[i][baum_roty]=0.0;
- wbaum[i][baum_rotz]=0.0;
- DestroyObject(wbaum[i][id]);
- wbaum[i][id] = 0;
- DisablePlayerCheckpoint(playerid);
- SendClientMessage(playerid,-1,OBJECT_DELETE);
- new pfad[30];
- format(pfad,30,WBAUM_DINI,i);
- dini_Remove(pfad);
- return 1;
- }
- stock DIALOG_WBAUM_EDIT(playerid,response,listitem,show=0)
- {
- if(show) return ShowPlayerDialog(playerid,WBAUM_EDIT,DIALOG_STYLE_LIST,"Weinachtsbaum - Editieren","Position Manuel eingeben\nMit dem Mapeditor","Weiter","Zurück");
- if(!response) return DIALOG_WBAUM_HOME(playerid,0,0,1);
- switch(listitem)
- {
- case 0: {
- DIALOG_WBAUM_EDIT_MANUEL(playerid,0,1);
- }
- case 1: {
- CanSelectedObject[playerid] = 0;
- SendClientMessage(playerid,-1,SELECT_OBJECT);
- SelectObject(playerid);
- }
- }
- return 1;
- }
- stock DIALOG_WBAUM_EDIT_MANUEL(playerid,response,show=0)
- {
- if(show) {
- CanSelectedObject[playerid] = 1;
- SendClientMessage(playerid,-1,SELECT_OBJECT);
- SelectObject(playerid);
- return 1;
- if(!response) return DIALOG_WBAUM_EDIT(playerid,0,0,1);
- return 1;
- }
- stock DIALOG_WBAUM_EDIT_MANUEL1(playerid,response,listitem,show=0)
- {
- if(show) return ShowPlayerDialog(playerid,WBAUM_EDIT_MANUEL1,DIALOG_STYLE_LIST,"Weinachtsbaum - Editieren - Manuel","Position X\nPosition Y\nPosition Z\n\nRotation X\nRotation Y\nRotation Z","Weiter","Zurück");
- if(!response) return DIALOG_WBAUM_EDIT_MANUEL(playerid,0,1);
- PlayerEditManuelObject[playerid] = listitem+1;
- DIALOG_WBAUM_EDIT_MANUEL2(playerid,0,"",1);
- return 1;
- }
- stock DIALOG_WBAUM_EDIT_MANUEL2(playerid,response,inputtext[],show=0)
- {
- new string1[60],string2[60],Poslistitem = PlayerEditManuelObject[playerid], i = PlayerSelectedObject[playerid];
- if(Poslistitem == 1) format(string1,60,"Position X");
- else if(Poslistitem == 2) format(string1,60,"Position Y");
- else if(Poslistitem == 3) format(string1,60,"Position Z");
- else if(Poslistitem == 4) format(string1,60,"Rotation X");
- else if(Poslistitem == 5) format(string1,60,"Rotation Y");
- else if(Poslistitem == 6) format(string1,60,"Rotation Z");
- format(string2,60,"Weinachtsbaum - Editieren - Baum %d - Manuel - %s",i,string1);
- if(show) return ShowPlayerDialog(playerid,WBAUM_EDIT_MANUEL2,DIALOG_STYLE_INPUT,string2,"Gebe nun die Position ein.\n\nAchtung: dieser input muss nach dem Schema sein '0.0'","Weiter","Zurück");
- if(!response) return DIALOG_WBAUM_EDIT_MANUEL1(playerid,0,0,1);
- if(Poslistitem == 1) wbaum[i][baum_posx] = floatstr(inputtext);
- else if(Poslistitem == 2) wbaum[i][baum_posy] = floatstr(inputtext);
- else if(Poslistitem == 3) wbaum[i][baum_posz] = floatstr(inputtext);
- else if(Poslistitem == 4) wbaum[i][baum_rotx] = floatstr(inputtext);
- else if(Poslistitem == 5) wbaum[i][baum_roty] = floatstr(inputtext);
- else if(Poslistitem == 6) wbaum[i][baum_rotz] = floatstr(inputtext);
- SetObjectPos(wbaum[i][id], wbaum[i][baum_posx], wbaum[i][baum_posy], wbaum[i][baum_posz]);
- SetObjectRot(wbaum[i][id], wbaum[i][baum_rotx], wbaum[i][baum_roty], wbaum[i][baum_rotz]);
- new pfad[30];
- format(pfad,30,WBAUM_DINI,i);
- dini_IntSet(pfad,"baum_model",wbaum[i][baum_model]);
- dini_FloatSet(pfad,"baum_posx",wbaum[i][baum_posx]);
- dini_FloatSet(pfad,"baum_posy",wbaum[i][baum_posy]);
- dini_FloatSet(pfad,"baum_posz",wbaum[i][baum_posz]);
- dini_FloatSet(pfad,"baum_rotx",wbaum[i][baum_rotx]);
- dini_FloatSet(pfad,"baum_roty",wbaum[i][baum_roty]);
- dini_FloatSet(pfad,"baum_rotz",wbaum[i][baum_rotz]);
- DIALOG_WBAUM_EDIT_MANUEL1(playerid,0,0,1);
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement