Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- ============================================================= Dynamisches Pickup-System by DrMurphy ========================================================================================================
- Copyright: Dieses Filterscript ist Eigentum von DrMurphy (samp Forum: http://forum.sa-mp.de/index.php?page=User&userID=32610)
- und darf zwar verwendet und auch verändert werden, jedoch nicht als eigenes System ausgegeben werden, sondern es muss darauf hingewiesen werden,
- dass die Grundstruktur des Scripts DrMurphy stammt.
- Außerdem darf dieser Text weder entfernt, noch von anderen Personen außer DrMurphy verändert werden.
- Benutzerhinweise: Eine ausführliche Erklärung aller Befehle und Funktionen ist im sa-mp.de Forum im Showroom des Systems zu finden.
- Verbesserungsvorschläge und Ideen für neue Funktionen werden dort ebenfalls gerne gesehen.
- Version: 1.0
- Datum: 19.03.2014 um 17:21 Uhr
- =============================================================================================================================================================================================================
- */
- #define FILTERSCRIPT
- #include <a_samp>
- #include <sscanf2>
- #include <dini>
- #define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1
- #define MAX_PICKS 500
- //Farben:
- #define COLOR_GREY 0xAFAFAFAA
- #define COLOR_GREEN 0x33AA33AA
- #define COLOR_RED 0xAA3333AA
- #define COLOR_YELLOW 0xFFFF00AA
- #define COLOR_WHITE 0xFFFFFFAA
- #define COLOR_BLUE 0x0000BBAA
- #define COLOR_LIGHTBLUE 0x33CCFFAA
- #define COLOR_ORANGE 0xFF9900AA
- #define COLOR_LIME 0x10F441AA
- #define COLOR_MAGENTA 0xFF00FFFF
- #define COLOR_NAVY 0x000080AA
- #define COLOR_AQUA 0xF0F8FFAA
- #define COLOR_CRIMSON 0xDC143CAA
- #define COLOR_FLBLUE 0x6495EDAA
- #define COLOR_BISQUE 0xFFE4C4AA
- #define COLOR_BLACK 0x000000AA
- #define COLOR_CHARTREUSE 0x7FFF00AA
- #define COLOR_BROWN 0XA52A2AAA
- #define COLOR_CORAL 0xFF7F50AA
- #define COLOR_GOLD 0xB8860BAA
- #define COLOR_GREENYELLOW 0xADFF2FAA
- #define COLOR_INDIGO 0x4B00B0AA
- #define COLOR_IVORY 0xFFFF82AA
- #define COLOR_LAWNGREEN 0x7CFC00AA
- #define COLOR_SEAGREEN 0x20B2AAAA
- #define COLOR_DARKLIME 0x32CD32AA
- #define COLOR_MIDNIGHTBLUE 0X191970AA
- #define COLOR_MAROON 0x800000AA
- #define COLOR_OLIVE 0x808000AA
- #define COLOR_ORANGERED 0xFF4500AA
- #define COLOR_LIGHTLIGHTPINK 0xFFC0CBAA
- #define COLOR_SPRINGGREEN 0x00FF7FAAP
- #define COLOR_YELLOWGREEN 0x9ACD32AA
- #define COLOR_MEDIUMAQUA 0x83BFBFAA
- #define COLOR_DARKMAGENTA 0x8B008BAA
- //Dialoge:
- #define DIALOG_CABBRECHEN 891
- #define DIALOG_CREMOVE 892
- enum PickupDaten
- {
- name[128],
- id,
- type,
- interior,
- Float:posx,
- Float:posy,
- Float:posz,
- Float:tpx,
- Float:tpy,
- Float:tpz,
- Float:tpang,
- dpickup,
- Text3D:tlabel,
- aktiv
- }
- new pickupI[MAX_PICKS][PickupDaten];
- new peditid[MAX_PLAYERS];
- new peditid2[MAX_PLAYERS];
- new newpickup[MAX_PLAYERS];
- #if defined FILTERSCRIPT
- public OnFilterScriptInit()
- {
- print("\n----------------------------------------------------------");
- print("Dynamisches Pickup-System by DrMurphy erfolgreich geladen!");
- print("----------------------------------------------------------\n");
- new pdatei[128];
- for(new i = 0; MAX_PICKS > i; i++)
- {
- format(pdatei,128,"/DPickups/Pickup%i.txt",i);
- if(dini_Exists(pdatei))
- {
- //laden
- pickupI[i][aktiv] = 1;
- pickupI[i][id] = i;
- pickupI[i][type] = dini_Int(pdatei,"Model");
- pickupI[i][interior] = dini_Int(pdatei,"Interior");
- format(pickupI[i][name],128,"%s",dini_Get(pdatei,"Name"));
- pickupI[i][posx] = dini_Float(pdatei,"Pos_X");
- pickupI[i][posy] = dini_Float(pdatei,"Pos_Y");
- pickupI[i][posz] = dini_Float(pdatei,"Pos_Z");
- pickupI[i][tpx] = dini_Int(pdatei,"TP_X");
- pickupI[i][tpy] = dini_Int(pdatei,"TP_Y");
- pickupI[i][tpz] = dini_Int(pdatei,"TP_Z");
- pickupI[i][tpang] = dini_Int(pdatei,"TP_Ang");
- pickupI[i][dpickup] = CreatePickup(pickupI[i][type],1,pickupI[i][posx],pickupI[i][posy],pickupI[i][posz],0);
- new string[128];
- format(string,sizeof(string),"%s\nEntertaste drücken",pickupI[i][name]);
- pickupI[i][tlabel] = Create3DTextLabel(string,COLOR_LIGHTBLUE,pickupI[i][posx],pickupI[i][posy],pickupI[i][posz] + 1,10,0,0);
- }
- }
- return 1;
- }
- public OnFilterScriptExit()
- {
- return 1;
- }
- #else
- main()
- {
- print(" ");
- print(" ");
- print(" ");
- }
- #endif
- public OnGameModeInit()
- {
- return 1;
- }
- public OnGameModeExit()
- {
- return 1;
- }
- public OnPlayerRequestClass(playerid, classid)
- {
- return 1;
- }
- public OnPlayerConnect(playerid)
- {
- newpickup[playerid] = 0;
- peditid[playerid] = 0;
- peditid2[playerid] = 0;
- return 1;
- }
- public OnPlayerDisconnect(playerid, reason)
- {
- return 1;
- }
- public OnPlayerSpawn(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[])
- {
- dcmd(ceingang, 8, cmdtext);
- dcmd(causgang, 8, cmdtext);
- if(strcmp("/premove", cmdtext, true, 10) == 0)
- {
- if(IsPlayerAdmin(playerid))
- {
- if(newpickup[playerid] == 0)
- {
- for(new i = 0; MAX_PICKS > i; i++)
- {
- if(IsPlayerInRangeOfPoint(playerid,2,pickupI[i][posx],pickupI[i][posy],pickupI[i][posz]))
- {
- peditid[playerid] = i;
- ShowPlayerDialog(playerid,DIALOG_CREMOVE,DIALOG_STYLE_MSGBOX,"Pickup löschen - Bestätigung","Möchtest du das Pickup wirklich löschen?","Ja","Nein");
- return 1;
- }
- }
- SendClientMessage(playerid,COLOR_RED,"In deiner Nähe befindet sich kein dynamisches Pickup!");
- return 1;
- }
- else
- {
- return SendClientMessage(playerid,COLOR_RED,"Du musst die Editierung des Pickups erst abbrechen! (/pabbrechen)");
- }
- }
- else
- {
- return SendClientMessage(playerid,COLOR_RED,"Du bist kein Admin!");
- }
- }
- if(strcmp("/causgangspawn", cmdtext, true, 15) == 0)
- {
- if(IsPlayerAdmin(playerid))
- {
- if(newpickup[playerid] == 4)
- {
- new Float:x, Float:y, Float:z, Float:ang;
- GetPlayerPos(playerid,x,y,z);
- GetPlayerFacingAngle(playerid,ang);
- new i = peditid2[playerid];
- pickupI[i][tpx] = x;
- pickupI[i][tpy] = y;
- pickupI[i][tpz] = z;
- pickupI[i][tpang] = ang;
- new pdatei[128];
- format(pdatei,128,"/DPickups/Pickup%i.txt",i);
- dini_FloatSet(pdatei,"TP_X",pickupI[i][tpx]);
- dini_FloatSet(pdatei,"TP_Y",pickupI[i][tpy]);
- dini_FloatSet(pdatei,"TP_Z",pickupI[i][tpz]);
- dini_FloatSet(pdatei,"TP_Ang",pickupI[i][tpang]);
- newpickup[playerid] = 0;
- peditid[playerid] = 0;
- peditid2[playerid] = 0;
- SendClientMessage(playerid,COLOR_GREEN,"Ausgang Spawn erfolgreich erstellt!");
- SendClientMessage(playerid,COLOR_YELLOW,"Erstellung des dynamischen Ein- bzw. Ausgangs erfolgreich abgeschlossen!");
- return 1;
- }
- else
- {
- return SendClientMessage(playerid,COLOR_RED,"Du musst vorher '/cpickup' eingeben!");
- }
- }
- else
- {
- return SendClientMessage(playerid,COLOR_RED,"Du bist kein Admin!");
- }
- }
- if(strcmp("/ceingangspawn", cmdtext, true, 15) == 0)
- {
- if(IsPlayerAdmin(playerid))
- {
- if(newpickup[playerid] == 2)
- {
- new Float:x, Float:y, Float:z, Float:ang;
- GetPlayerPos(playerid,x,y,z);
- GetPlayerFacingAngle(playerid,ang);
- new i = peditid[playerid];
- pickupI[i][tpx] = x;
- pickupI[i][tpy] = y;
- pickupI[i][tpz] = z;
- pickupI[i][tpang] = ang;
- new pdatei[128];
- format(pdatei,128,"/DPickups/Pickup%i.txt",i);
- dini_FloatSet(pdatei,"TP_X",pickupI[i][tpx]);
- dini_FloatSet(pdatei,"TP_Y",pickupI[i][tpy]);
- dini_FloatSet(pdatei,"TP_Z",pickupI[i][tpz]);
- dini_FloatSet(pdatei,"TP_Ang",pickupI[i][tpang]);
- newpickup[playerid] = 3;
- SendClientMessage(playerid,COLOR_GREEN,"Eingang Spawn erfolgreich erstellt!");
- SendClientMessage(playerid,COLOR_YELLOW,"Wenn du keinen Ausgang erstellen möchtest gib '/pabbrechen' ein. Der Eingang bleibt gespeichert!");
- SendClientMessage(playerid,COLOR_YELLOW,"Gib jetzt '/causgang' an der Stelle ein wo der Ausgang sein soll.");
- return 1;
- }
- if(newpickup[playerid] > 2)
- {
- return SendClientMessage(playerid,COLOR_RED,"Diesen Schritt hast du bereits gemacht! ('/pabbrechen' um die Editierung abzubrechen)");
- }
- else
- {
- return SendClientMessage(playerid,COLOR_RED,"Du musst vorher '/cpickup' eingeben!");
- }
- }
- else
- {
- return SendClientMessage(playerid,COLOR_RED,"Du bist kein Admin!");
- }
- }
- if (strcmp("/cpickup", cmdtext, true, 10) == 0)
- {
- if(IsPlayerAdmin(playerid))
- {
- if(newpickup[playerid] == 0)
- {
- newpickup[playerid] = 1;
- SendClientMessage(playerid,COLOR_GREEN,"Erstellung eines neuen Pickups begonnen!");
- SendClientMessage(playerid,COLOR_YELLOW,"Gib '/ceingang' an der Position ein wo der Eingang sein soll.");
- return 1;
- }
- else
- {
- return SendClientMessage(playerid,COLOR_RED,"Du erstellst gerade noch ein Pickup! (Zum Abbrechen: /pabbrechen)");
- }
- }
- else
- {
- return SendClientMessage(playerid,COLOR_RED,"Du bist kein Admin!");
- }
- }
- if(strcmp("/pabbrechen", cmdtext, true, 15) == 0)
- {
- if(IsPlayerAdmin(playerid))
- {
- ShowPlayerDialog(playerid,DIALOG_CABBRECHEN,DIALOG_STYLE_MSGBOX,"Abbrechen - Bestätigung","Bist du sicher dass du die Editierung des Pickups abbrechen möchtest?\nDie vorgenommenen Einstellungen an dem Pickup gehen dabei vielleicht verloren!","Ja","Nein");
- return 1;
- }
- else
- {
- return SendClientMessage(playerid,COLOR_RED,"Du bist kein Admin!");
- }
- }
- return 0;
- }
- dcmd_causgang(playerid, params[])
- {
- if(IsPlayerAdmin(playerid))
- {
- if(newpickup[playerid] == 3)
- {
- new pname[128], pmodel;
- if(sscanf(params, "si", pname, pmodel))
- {
- return SendClientMessage(playerid,COLOR_LIGHTBLUE,"Verwendung: /causgang [Name des Ausgangs] [Pickup Model]");
- }
- else
- {
- new pdatei[128];
- for(new i = 0; MAX_PICKS > i; i++)
- {
- if(pickupI[i][aktiv] == 0)
- {
- format(pdatei,128,"/DPickups/Pickup%i.txt",i);
- dini_Create(pdatei);
- peditid2[playerid] = i;
- pickupI[i][aktiv] = 1;
- format(pickupI[i][name],128,"%s",pname);
- pickupI[i][id] = i;
- pickupI[i][tpx] = pickupI[peditid[playerid]][posx];
- pickupI[i][tpy] = pickupI[peditid[playerid]][posy];
- pickupI[i][tpz] = pickupI[peditid[playerid]][posz];
- pickupI[i][type] = pmodel;
- pickupI[i][interior] = 0;
- new Float:x, Float:y, Float:z;
- GetPlayerPos(playerid,x,y,z);
- pickupI[i][dpickup] = CreatePickup(pickupI[i][type],1,x,y,z,0);
- pickupI[i][posx] = x;
- pickupI[i][posy] = y;
- pickupI[i][posz] = z;
- new string[128];
- format(string,sizeof(string),"%s\nEntertaste drücken",pname);
- pickupI[i][tlabel] = Create3DTextLabel(string,COLOR_LIGHTBLUE,x,y,z + 1,10,0,0);
- dini_Set(pdatei,"Name",pickupI[i][name]);
- dini_IntSet(pdatei,"Model",pickupI[i][type]);
- dini_IntSet(pdatei,"Interior",pickupI[i][interior]);
- dini_FloatSet(pdatei,"Pos_X",pickupI[i][posx]);
- dini_FloatSet(pdatei,"Pos_Y",pickupI[i][posy]);
- dini_FloatSet(pdatei,"Pos_Z",pickupI[i][posz]);
- dini_FloatSet(pdatei,"TP_X",pickupI[i][tpx]);
- dini_FloatSet(pdatei,"TP_Y",pickupI[i][tpy]);
- dini_FloatSet(pdatei,"TP_Z",pickupI[i][tpz]);
- SendClientMessage(playerid,COLOR_GREEN,"Ausgang erfolgreich erstellt!");
- SendClientMessage(playerid,COLOR_YELLOW,"Gib '/causgangspawn' an der Stelle ein wo der Spieler spawnen soll.");
- SetPlayerPos(playerid,pickupI[i][tpx],pickupI[i][tpy],pickupI[i][tpz]);
- SetPlayerInterior(playerid,0);
- newpickup[playerid] = 4;
- return 1;
- }
- }
- SendClientMessage(playerid,COLOR_RED,"Die maximale Anzahl von Pickups wurde erreicht!");
- return 1;
- }
- }
- if(newpickup[playerid] > 3)
- {
- return SendClientMessage(playerid,COLOR_RED,"Diesen Schritt hast du bereits gemacht! ('/pabbrechen' um die Editierung abzubrechen)");
- }
- else
- {
- return SendClientMessage(playerid,COLOR_RED,"Du musst vorher '/cpickup' eingeben!");
- }
- }
- else
- {
- return SendClientMessage(playerid,COLOR_RED,"Du bist kein Admin!");
- }
- }
- dcmd_ceingang(playerid, params[])
- {
- if(IsPlayerAdmin(playerid))
- {
- if(newpickup[playerid] == 1)
- {
- new pname[128], picon, pinterior;
- new Float:pposx, Float:pposy, Float:pposz;
- if(sscanf(params, "siifff", pname, picon, pinterior, pposx, pposy, pposz))
- {
- return SendClientMessage(playerid,COLOR_LIGHTBLUE,"Verwendung: /ceingang [Name des Eingangs] [Pickup Model] [Interior ID] [Spawn X] [Spawn Y] [Spawn Z]");
- }
- else
- {
- new pdatei[128];
- for(new i = 0; MAX_PICKS > i; i++)
- {
- if(pickupI[i][aktiv] == 0)
- {
- format(pdatei,sizeof(pdatei),"/DPickups/Pickup%i.txt",i);
- dini_Create(pdatei);
- pickupI[i][aktiv] = 1;
- format(pickupI[i][name],128,"%s",pname);
- pickupI[i][id] = i;
- peditid[playerid] = i;
- pickupI[i][tpx] = pposx;
- pickupI[i][tpy] = pposy;
- pickupI[i][tpz] = pposz;
- pickupI[i][type] = picon;
- pickupI[i][interior] = pinterior;
- new Float:x, Float:y, Float:z;
- GetPlayerPos(playerid,x,y,z);
- pickupI[i][dpickup] = CreatePickup(pickupI[i][type],1,x,y,z,0);
- pickupI[i][posx] = x;
- pickupI[i][posy] = y;
- pickupI[i][posz] = z;
- new string[128];
- format(string,sizeof(string),"%s\nEntertaste drücken",pname);
- pickupI[i][tlabel] = Create3DTextLabel(string,COLOR_LIGHTBLUE,x,y,z + 1,10,0,0);
- dini_Set(pdatei,"Name",pickupI[i][name]);
- dini_IntSet(pdatei,"Model",pickupI[i][type]);
- dini_IntSet(pdatei,"Interior",pickupI[i][interior]);
- dini_FloatSet(pdatei,"Pos_X",pickupI[i][posx]);
- dini_FloatSet(pdatei,"Pos_Y",pickupI[i][posy]);
- dini_FloatSet(pdatei,"Pos_Z",pickupI[i][posz]);
- dini_FloatSet(pdatei,"TP_X",pickupI[i][tpx]);
- dini_FloatSet(pdatei,"TP_Y",pickupI[i][tpy]);
- dini_FloatSet(pdatei,"TP_Z",pickupI[i][tpz]);
- SendClientMessage(playerid,COLOR_GREEN,"Eingang erfolgreich erstellt!");
- SendClientMessage(playerid,COLOR_YELLOW,"Gib nun '/ceingangspawn' an der Stelle ein wo der Spieler spawnen soll.");
- SetPlayerPos(playerid,pickupI[i][tpx],pickupI[i][tpy],pickupI[i][tpz]);
- SetPlayerInterior(playerid,pickupI[i][interior]);
- newpickup[playerid] = 2;
- return 1;
- }
- }
- SendClientMessage(playerid,COLOR_RED,"Die maximale Anzahl von Pickups wurde erreicht!");
- return 1;
- }
- }
- if(newpickup[playerid] > 1)
- {
- return SendClientMessage(playerid,COLOR_RED,"Diesen Schritt hast du bereits gemacht! ('/pabbrechen' um die Editierung abzubrechen)");
- }
- else
- {
- return SendClientMessage(playerid,COLOR_RED,"Du musst vorher '/cpickup' eingeben!");
- }
- }
- else
- {
- return SendClientMessage(playerid,COLOR_RED,"Du bist kein Admin!");
- }
- }
- 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 == 16) //enter
- {
- for(new i = 0; MAX_PICKS > i; i++)
- {
- if(IsPlayerInRangeOfPoint(playerid,2,pickupI[i][posx],pickupI[i][posy],pickupI[i][posz]))
- {
- if(pickupI[i][aktiv] == 1)
- {
- SetPlayerPos(playerid,pickupI[i][tpx],pickupI[i][tpy],pickupI[i][tpz]);
- SetPlayerInterior(playerid,pickupI[i][interior]);
- SetPlayerFacingAngle(playerid,pickupI[i][tpang]);
- SetCameraBehindPlayer(playerid);
- return 1;
- }
- }
- }
- }
- return 1;
- }
- public OnRconLoginAttempt(ip[], password[], success)
- {
- return 1;
- }
- public OnPlayerUpdate(playerid)
- {
- 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[])
- {
- if(dialogid == DIALOG_CREMOVE)
- {
- if(response == 1)
- {
- new i = peditid[playerid];
- pickupI[i][aktiv] = 0;
- new pdatei[128];
- format(pdatei,128,"/DPickups/Pickup%i.txt",i);
- dini_Remove(pdatei);
- DestroyPickup(pickupI[i][dpickup]);
- Delete3DTextLabel(pickupI[i][tlabel]);
- SendClientMessage(playerid,COLOR_GREEN,"Das Pickup wurde erfolgreich gelöscht!");
- return 1;
- }
- if(response == 0)
- {
- return 1;
- }
- return 1;
- }
- if(dialogid == DIALOG_CABBRECHEN)
- {
- if(response == 1)
- {
- SendClientMessage(playerid,COLOR_GREEN,"Editierung des Pickups abgebrochen!");
- newpickup[playerid] = 0;
- return 1;
- }
- if(response == 0)
- {
- return 1;
- }
- return 1;
- }
- return 0;
- }
- public OnPlayerClickPlayer(playerid, clickedplayerid, source)
- {
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment