Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* SA-MP 3DText Tool Filterscript
- *
- * © by Kaliber, 2014
- *
- */
- #include <a_samp>
- /******************************************************************************/
- #define INVALID 0
- #define MAX_LABELS 100
- #define e_Color 0xFFFFFFFF
- #define SCM SendClientMessage
- #define rot 0xFF6347AA
- #define blau 0x33CCFFAA
- /******************************************************************************/
- enum e_Label {
- Text3D:e_ID,
- Float:e_Pos[3],
- e_Name[128]
- };
- static DB:Texts3D,LabelInfo[MAX_LABELS][e_Label];
- /******************************************************************************/
- public OnFilterScriptInit() return print("\t* 3DText Tool (c) by Kaliber loaded. *"),Texts3D=db_open("Texts3D.db"),db_free_result(db_query(Texts3D,"CREATE TABLE IF NOT EXISTS `3D` (`id`,`Name`,`PosX`,`PosY`,`PosZ`)")),Load3DText();
- public OnFilterScriptExit() return db_close(Texts3D);
- public OnPlayerCommandText(playerid,cmdtext[]) {
- if(!strcmp(cmdtext,#/create3D,true)) return ShowPlayerDialog(playerid,569,DIALOG_STYLE_INPUT,"{FF0000}3D Text Inhalt","{FFFFFF}Bitte gib hier den 3D Text ein:","Bestätigen","Abbrechen");
- if(!strcmp(cmdtext,#/update3D,true)) return ShowPlayerDialog(playerid,570,DIALOG_STYLE_INPUT,"{FF0000}3D Text Inhalt Update","{FFFFFF}Bitte gib hier den neuen 3D Text ein:","Bestätigen","Abbrechen");
- if(!strcmp(cmdtext,#/destroy3D,true) || !strcmp(cmdtext,#/delete3D,true)) {
- new i=GetIDInRange(playerid),string[64];
- if(i == -1) return SCM(playerid,rot,"Sie befinden sich nicht in der Nähe eines 3DTextLabels!");
- Delete3DTextLabel(LabelInfo[i][e_ID]);
- format(string,64,"DELETE FROM `3D` WHERE `id`='%d'",i),db_free_result(db_query(Texts3D,string));
- return SCM(playerid,blau,"Sie haben das 3DTextLabel erfolgreich entfernt!");
- }
- return 0;
- }
- public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) {
- new string[128];
- switch(dialogid) {
- case 569: {
- if(!inputtext[0]) return SCM(playerid,rot,"Bitte geben Sie auch einen Text ein!");
- new Float:p[3],i=GetFreeID();
- if(i == -1) return SCM(playerid,rot,"Du hast schon 100 3DText Labels erstellt!");
- GetPlayerPos(playerid,p[0],p[1],p[2]),strcat(LabelInfo[i][e_Name],inputtext),LabelInfo[i][e_Pos][0]=p[0],LabelInfo[i][e_Pos][1]=p[1],LabelInfo[i][e_Pos][2]=p[2];
- LabelInfo[i][e_ID] = Create3DTextLabel(inputtext,e_Color,p[0],p[1],p[2],50.0,0,0);
- format(string,128,"INSERT INTO `3D` (`id`,`Name`,`PosX`,`PosY`,`PosZ`) VALUES ('%d','%s','%f','%f','%f')",i,inputtext,p[0],p[1],p[2]),db_free_result(db_query(Texts3D,string));
- SCM(playerid,blau,"Das 3D TextLabel wurde erfolgreich erstellt!");
- }
- case 570: {
- if(!inputtext[0]) return SCM(playerid,rot,"Bitte geben Sie auch einen Text ein!");
- new i=GetIDInRange(playerid);
- if(i == -1) return SCM(playerid,rot,"Es ist kein 3DTextLabel in deiner Nähe!");
- strcat(LabelInfo[i][e_Name],inputtext),Update3DTextLabelText(LabelInfo[i][e_ID],e_Color,inputtext);
- format(string,128,"UPDATE `3D` SET `Name`='%s' WHERE `id`='%d'",inputtext,i),db_free_result(db_query(Texts3D,string));
- SCM(playerid,blau,"Das 3D TextLabel wurde erfolgreich geupdatet!");
- }
- }
- return 0;
- }
- /******************************************************************************/
- stock Load3DText() {
- new szQuery[128], szOut[32], DBResult: query;
- for(new i; i<MAX_LABELS; i++) {
- format(szQuery, sizeof(szQuery), "SELECT * FROM `3D` WHERE `id`='%d'",i);
- query = db_query(Texts3D, szQuery);
- if(!db_num_rows(query)) continue;
- db_get_field_assoc(query, "Name", LabelInfo[i][e_Name], 128);
- db_get_field_assoc(query, "PosX", szOut, 32),LabelInfo[i][e_Pos][0] = floatstr(szOut);
- db_get_field_assoc(query, "PosY", szOut, 32),LabelInfo[i][e_Pos][1] = floatstr(szOut);
- db_get_field_assoc(query, "PosZ", szOut, 32),LabelInfo[i][e_Pos][2] = floatstr(szOut);
- LabelInfo[i][e_ID] = Create3DTextLabel(LabelInfo[i][e_Name],e_Color,LabelInfo[i][e_Pos][0],LabelInfo[i][e_Pos][1],LabelInfo[i][e_Pos][2],50.0,0,0);
- }
- return 1;
- }
- stock GetFreeID() {
- for(new i; i<MAX_LABELS; i++) if(!LabelInfo[i][e_ID]) return i;
- return -1;
- }
- stock GetIDInRange(playerid) {
- for(new i; i<MAX_LABELS; i++) if(IsPlayerInRangeOfPoint(playerid,3.0,LabelInfo[i][e_Pos][0],LabelInfo[i][e_Pos][1],LabelInfo[i][e_Pos][2])) return i;
- return -1;
- }
Advertisement
Add Comment
Please, Sign In to add comment