Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* Eventsystem by ErikSon */
- #include <a_samp>
- #include <ocmd>
- //Farben
- #define Schwarz 0x000000FF
- #define Rot 0xE10000FF
- #define Gelb 0xFFE600FF
- #define HBlau 0x00FFFFFF
- #define DBlau 0x0000FFFF
- #define Blau 0x2E9AFEFF
- #define HGruen 0x00FF00FF
- #define Orange 0xFFAB00FF
- #define Weiss 0xFFFFFFFF
- #define Grau 0xDCDCDCFF
- #define Gold 0xD4A017AA
- #define Lila 0x7800FFFF
- #define Pink 0xFF00CDFF
- #define Gruen 0x009F32FF
- //Sonstiges
- #define SCM SendClientMessage
- #define SCMToAll SendClientMessageToAll
- new fmex[128];
- #define SCMToAllF(%0,%1,%2) format(fmex,128,%1,%2) && SendClientMessageToAll(%0, fmex)
- #define SCMF(%0,%1,%2) format(fmex,128,%2) && SendClientMessage(%0,%1,fmex)
- //Enums
- enum EEvent
- {
- Float:ex,
- Float:ey,
- Float:ez,
- EventStart,
- Waffe,
- Schuss,
- Float:Leben,
- Float:Armour,
- Fahrzeug
- }
- new Event[EEvent];
- new Waffen[MAX_PLAYERS][2],
- Float:ox[MAX_PLAYERS],
- Float:oy[MAX_PLAYERS],
- Float:oz[MAX_PLAYERS],
- EventVeh[MAX_PLAYERS],
- OnEvent[MAX_PLAYERS];
- new VehName[][] =
- {
- "Landstalker", "Bravura", "Buffalo", "Linerunner", "Perrenial", "Sentinel",
- "Dumper", "Firetruck", "Trashmaster", "Stretch", "Manana", "Infernus",
- "Voodoo", "Pony", "Mule", "Cheetah", "Ambulance", "Leviathan", "Moonbeam",
- "Esperanto", "Taxi", "Washington", "Bobcat", "Whoopee", "BF Injection",
- "Hunter", "Premier", "Enforcer", "Securicar", "Banshee", "Predator", "Bus",
- "Rhino", "Barracks", "Hotknife", "Trailer", "Previon", "Coach", "Cabbie",
- "Stallion", "Rumpo", "RC Bandit", "Romero", "Packer", "Monster", "Admiral",
- "Squalo", "Seasparrow", "Pizzaboy", "Tram", "Trailer", "Turismo", "Speeder",
- "Reefer", "Tropic", "Flatbed", "Yankee", "Caddy", "Solair", "Berkley's RC Van",
- "Skimmer", "PCJ-600", "Faggio", "Freeway", "RC Baron", "RC Raider", "Glendale",
- "Oceanic","Sanchez", "Sparrow", "Patriot", "Quad", "Coastguard", "Dinghy",
- "Hermes", "Sabre", "Rustler", "ZR-350", "Walton", "Regina", "Comet", "BMX",
- "Burrito", "Camper", "Marquis", "Baggage", "Dozer", "Maverick", "News Chopper",
- "Rancher", "FBI Rancher", "Virgo", "Greenwood", "Jetmax", "Hotring", "Sandking",
- "Blista Compact", "Police Maverick", "Boxville", "Benson", "Mesa", "RC Goblin",
- "Hotring Racer A", "Hotring Racer B", "Bloodring Banger", "Rancher", "Super GT",
- "Elegant", "Journey", "Bike", "Mountain Bike", "Beagle", "Cropduster", "Stunt",
- "Tanker", "Roadtrain", "Nebula", "Majestic", "Buccaneer", "Shamal", "Hydra",
- "FCR-900", "NRG-500", "HPV1000", "Cement Truck", "Tow Truck", "Fortune",
- "Cadrona", "FBI Truck", "Willard", "Forklift", "Tractor", "Combine", "Feltzer",
- "Remington", "Slamvan", "Blade", "Freight", "Streak", "Vortex", "Vincent",
- "Bullet", "Clover", "Sadler", "Firetruck", "Hustler", "Intruder", "Primo",
- "Cargobob", "Tampa", "Sunrise", "Merit", "Utility", "Nevada", "Yosemite",
- "Windsor", "Monster", "Monster", "Uranus", "Jester", "Sultan", "Stratium",
- "Elegy", "Raindance", "RC Tiger", "Flash", "Tahoma", "Savanna", "Bandito",
- "Freight Flat", "Streak Carriage", "Kart", "Mower", "Dune", "Sweeper",
- "Broadway", "Tornado", "AT-400", "DFT-30", "Huntley", "Stafford", "BF-400",
- "News Van", "Tug", "Trailer", "Emperor", "Wayfarer", "Euros", "Hotdog", "Club",
- "Freight Box", "Trailer", "Andromada", "Dodo", "RC Cam", "Launch", "Police Car",
- "Police Car", "Police Car", "Police Ranger", "Picador", "S.W.A.T", "Alpha",
- "Phoenix", "Glendale", "Sadler", "Luggage", "Luggage", "Stairs", "Boxville",
- "Tiller", "Utility Trailer"
- };
- enum
- {
- dEventManager,
- dEventManager2,
- dEWaffe,
- dESchuss,
- dEFahrzeug,
- dELeben,
- dEArmour,
- dECP
- }
- //////////////////////////////////////
- //////////////////////////////////////
- //////////////////////////////////////
- //////////////////////////////////////
- public OnFilterScriptInit()
- {
- print("\n--------------------------------------");
- print("Eventsystem by ErikSon");
- print("--------------------------------------\n");
- Event[Schuss] = 1;
- Event[Waffe] = 0;
- Event[Fahrzeug] = 0;
- Event[Leben] = 100.00;
- Event[Armour] = 100.00;
- return 1;
- }
- public OnPlayerConnect(playerid)
- {
- OnEvent[playerid] = 0;
- if(Event[EventStart] == 1)SCM(playerid,Blau,"**Es läuft zur Zeit ein Event. Tippe '/gotoevent', um dich zum Event zu teleportieren.");
- return 1;
- }
- public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
- {
- new i,s,w;
- switch(dialogid)
- {
- case dEventManager:
- {
- if(response)
- {
- switch(listitem)
- {
- case 0:
- {
- GetPlayerPos(playerid,Event[ex],Event[ey],Event[ez]);
- SCMToAll(Blau,"**Es wurde ein Event gestartet. Tippe '/gotoevent', um dich zum Event zu teleportieren.");
- Event[EventStart] = 1;
- }
- case 1:
- {
- ShowPlayerDialog(playerid,dECP,DIALOG_STYLE_LIST,"Checkpoints - erstellen/löschen","Startcheckpoint\nNormalen Checkpoint\nEndcheckpoint\nCheckpoint löschen","Erstellen","Abbrechen");
- }
- case 2:ShowPlayerDialog(playerid,dEFahrzeug,DIALOG_STYLE_INPUT,"Fahrzeug","Tippe die Fahrzeug-ID\ndes Fahrzeuges ein,\ndas jeder Eventteilnehmer\nerhalten soll.\n\nUm kein Fahrzeug einzustellen,\ntippe -1 ein.","Auswählen","Abbrechen");
- case 3:ShowPlayerDialog(playerid,dEWaffe,DIALOG_STYLE_INPUT,"Waffe","Tippe die Waffen-ID der Waffe ein,\ndie jeder Eventteilnehmer\nerhalten soll.\n\nUm keine Waffe einzustellen,\ntippe -1 ein.","Auswählen","Abbrechen");
- case 4:ShowPlayerDialog(playerid,dESchuss,DIALOG_STYLE_INPUT,"Munition","Tippe ein, wie viel\nMunition jeder Eventteilnehmer\nfür seine Waffe erhalten soll.\n\nUm keine Munition einzustellen,\ntippe -1 ein.","Auswählen","Abbrechen");
- case 5:ShowPlayerDialog(playerid,dELeben,DIALOG_STYLE_INPUT,"Leben","Tippe ein, wie viel Leben (HP)\njeder Eventteilnehmer erhalten soll.","Auswählen","Abbrechen");
- case 6:ShowPlayerDialog(playerid,dEArmour,DIALOG_STYLE_INPUT,"Schutzweste","Tippe ein, wie viel Schutzweste\njeder Eventteilnehmer erhalten soll.","Auswählen","Abbrechen");
- }
- }
- }
- case dEFahrzeug:
- {
- if(response)
- {
- if(strval(inputtext) == -1)
- {
- Event[Fahrzeug] = 0;
- return ocmd_event(playerid);
- }
- else if(!strval(inputtext))
- {
- SCM(playerid,Rot,"**Bitte gebe eine Fahrzeug-ID ein!");
- return ocmd_event(playerid);
- }
- else if(strval(inputtext) < 400 || strval(inputtext) > 611)
- {
- SCM(playerid,Rot,"**Die Fahrzeug-ID darf nicht kleiner als 400 & nicht größer als 611 sein!");
- return ocmd_event(playerid);
- }
- Event[Fahrzeug] = strval(inputtext);
- return ocmd_event(playerid);
- }
- }
- case dEWaffe:
- {
- if(response)
- {
- if(strval(inputtext) == -1)
- {
- Event[Waffe] = 0;
- return ocmd_event(playerid);
- }
- else if(!strval(inputtext))
- {
- SCM(playerid,Rot,"**Bitte gebe eine Waffen-ID ein!");
- return ocmd_event(playerid);
- }
- else if(strval(inputtext) < 0 || strval(inputtext) > 46)
- {
- SCM(playerid,Rot,"**Die Waffen-ID darf nicht kleiner als 0 & nicht größer als 46 sein!");
- return ocmd_event(playerid);
- }
- Event[Waffe] = strval(inputtext);
- return ocmd_event(playerid);
- }
- }
- case dESchuss:
- {
- if(response)
- {
- if(!strval(inputtext))
- {
- SCM(playerid,Rot,"**Bitte gebe eine Schussmenge ein!");
- return ocmd_event(playerid);
- }
- Event[Schuss] = strval(inputtext);
- return ocmd_event(playerid);
- }
- }
- case dELeben:
- {
- if(response)
- {
- if(!strval(inputtext))
- {
- SCM(playerid,Rot,"**Bitte gebe eine Lebensangabe ein!");
- return ocmd_event(playerid);
- }
- else if(strval(inputtext) < 0)
- {
- SCM(playerid,Rot,"**Die Lebensangabe darf nicht kleiner als 0 sein!");
- return ocmd_event(playerid);
- }
- Event[Leben] = strval(inputtext);
- return ocmd_event(playerid);
- }
- }
- case dEArmour:
- {
- if(response)
- {
- if(!strval(inputtext))
- {
- SCM(playerid,Rot,"**Bitte gebe eine Schutzwestenangabe ein!");
- return ocmd_event(playerid);
- }
- else if(strval(inputtext) < 0)
- {
- SCM(playerid,Rot,"**Die Schutzwestenangabe darf nicht kleiner als 0 sein!");
- return ocmd_event(playerid);
- }
- Event[Armour] = strval(inputtext);
- return ocmd_event(playerid);
- }
- }
- case dEventManager2:
- {
- if(response)
- {
- switch(listitem)
- {
- case 0:
- {
- SCMToAll(Rot,"**Das Event wurde beendet.");
- Event[EventStart] = 0;
- for(i=0; i<MAX_PLAYERS; i++)
- {
- if(OnEvent[i] == 0)continue;
- ResetPlayerWeapons(i);
- DestroyVehicle(EventVeh[i]);
- SetPlayerPos(i,ox[i],oy[i],oz[i]);
- SetPlayerHealth(i,100);
- SetPlayerArmour(i,0);
- OnEvent[i] = 0;
- for(w = 0; w<13; w++)
- {
- for(s = 0; s<9999; s++)
- GivePlayerWeapon(i,Waffen[i][w],Waffen[i][s]);
- }
- }
- }
- }
- }
- }
- }
- return 0;
- }
- //Befehle
- ocmd:gotoevent(playerid)
- {
- if(Event[EventStart] == 0)return SCM(playerid,Rot,"**Es läuft zur Zeit kein Event!");
- GetPlayerPos(playerid,ox[playerid],oy[playerid],oz[playerid]);
- for (new i = 0; i < 13; i++)GetPlayerWeaponData(playerid, i, Waffen[playerid][0], Waffen[playerid][1]);
- ResetPlayerWeapons(playerid);
- SetPlayerPos(playerid,Event[ex],Event[ey],Event[ez]);
- SetPlayerArmour(playerid,Event[Armour]);
- SetPlayerHealth(playerid,Event[Leben]);
- GivePlayerWeapon(playerid,Event[Waffe],Event[Schuss]);
- EventVeh[playerid] = CreateVehicle(Event[Fahrzeug],Event[ex],Event[ey],Event[ez],-1,1,1,-1);
- SetVehicleNumberPlate(EventVeh[playerid],"Event");
- OnEvent[playerid] = 1;
- PutPlayerInVehicle(playerid,EventVeh[playerid],0);
- return 1;
- }
- ocmd:event(playerid)
- {
- new string[144];
- if(!IsPlayerAdmin(playerid))return SCM(playerid,Rot,"**Du bist kein RCON-Admin!");
- if(Event[Fahrzeug] == 0) {format(string,144,"Event starten\nRace Checkpoints erstellen ( Nach Update )\nFahrzeug: Keins\nWaffe: %s\nSchuss: %i\nLeben: %.2f\nSchutzweste: %.2f",Waffenname(Event[Waffe]),Event[Schuss],Event[Leben],Event[Armour]);}
- else if(Event[Fahrzeug] != 0) {format(string,144,"Event starten\nRace Checkpoints erstellen ( Nach Update )\nFahrzeug: %s\nWaffe: %s\nSchuss: %i\nLeben: %.2f\nSchutzweste: %.2f",VehName[Event[Fahrzeug] -400],Waffenname(Event[Waffe]),Event[Schuss],Event[Leben],Event[Armour]);}
- if(Event[EventStart] == 0)ShowPlayerDialog(playerid,dEventManager,DIALOG_STYLE_LIST,"Eventmanager",string,"Auswählen","Abbrechen");
- else if(Event[EventStart] == 1)ShowPlayerDialog(playerid,dEventManager2,DIALOG_STYLE_LIST,"Eventmanager","Event beenden","Auswählen","Abbrechen");
- return 1;
- }
- //Stocks
- stock Waffenname(id)
- {
- new wn[32];
- switch(id)
- {
- case 0:(wn = "Faust");
- case 1:(wn = "Schlagring");
- case 2:(wn = "Golfschläger");
- case 3:(wn = "Schlagstock");
- case 4:(wn = "Messer");
- case 5:(wn = "Baseballschläger");
- case 6:(wn = "Schaufel");
- case 7:(wn = "Billiardschläger");
- case 8:(wn = "Katana");
- case 9:(wn = "Kettensäge");
- case 10:(wn = "Dildo");
- case 11:(wn = "Dildo");
- case 12:(wn = "Dildo");
- case 13:(wn = "Dildo");
- case 14:(wn = "Blumen");
- case 15:(wn = "Stock");
- case 16:(wn = "Granate");
- case 17:(wn = "Rauchgranate");
- case 18:(wn = "Molotov");
- case 22:(wn = "9mm");
- case 23:(wn = "Silencer");
- case 24:(wn = "Desert Eagle");
- case 25:(wn = "Shotgun");
- case 26:(wn = "Sawn-off");
- case 27:(wn = "Combat");
- case 28:(wn = "Uzi");
- case 29:(wn = "MP5");
- case 30:(wn = "Ak47");
- case 31:(wn = "M4");
- case 32:(wn = "Tec 9");
- case 33:(wn = "Gewehr");
- case 34:(wn = "Sniper");
- case 35:(wn = "Raketenwerfer");
- case 36:(wn = "Stinger");
- case 37:(wn = "Flammenwerfer");
- case 38:(wn = "Minigun");
- case 39:(wn = "Rucksackbomben");
- case 40:(wn = "Fernzünder");
- case 41:(wn = "Spray");
- case 42:(wn = "Feuerlöscher");
- case 43:(wn = "Kamera");
- case 44:(wn = "Nachtvisier");
- case 45:(wn = "Nachtvisier");
- case 46:(wn = "Fallschirm");
- }
- return wn;
- }
- //sscanf Code
- stock sscanf(string[], format[], {Float,_}:...)
- {
- #if defined isnull
- if (isnull(string))
- #else
- if (string[0] == 0 || (string[0] == 1 && string[1] == 0))
- #endif
- {
- return format[0];
- }
- #pragma tabsize 4
- new
- formatPos = 0,
- stringPos = 0,
- paramPos = 2,
- paramCount = numargs(),
- delim = ' ';
- while (string[stringPos] && string[stringPos] <= ' ')
- {
- stringPos++;
- }
- while (paramPos < paramCount && string[stringPos])
- {
- switch (format[formatPos++])
- {
- case '\0':
- {
- return 0;
- }
- case 'i', 'd':
- {
- new
- neg = 1,
- num = 0,
- ch = string[stringPos];
- if (ch == '-')
- {
- neg = -1;
- ch = string[++stringPos];
- }
- do
- {
- stringPos++;
- if ('0' <= ch <= '9')
- {
- num = (num * 10) + (ch - '0');
- }
- else
- {
- return -1;
- }
- }
- while ((ch = string[stringPos]) > ' ' && ch != delim);
- setarg(paramPos, 0, num * neg);
- }
- case 'h', 'x':
- {
- new
- num = 0,
- ch = string[stringPos];
- do
- {
- stringPos++;
- switch (ch)
- {
- case 'x', 'X':
- {
- num = 0;
- continue;
- }
- case '0' .. '9':
- {
- num = (num << 4) | (ch - '0');
- }
- case 'a' .. 'f':
- {
- num = (num << 4) | (ch - ('a' - 10));
- }
- case 'A' .. 'F':
- {
- num = (num << 4) | (ch - ('A' - 10));
- }
- default:
- {
- return -1;
- }
- }
- }
- while ((ch = string[stringPos]) > ' ' && ch != delim);
- setarg(paramPos, 0, num);
- }
- case 'c':
- {
- setarg(paramPos, 0, string[stringPos++]);
- }
- case 'f':
- {
- new changestr[16], changepos = 0, strpos = stringPos;
- while(changepos < 16 && string[strpos] && string[strpos] != delim)
- {
- changestr[changepos++] = string[strpos++];
- }
- changestr[changepos] = '\0';
- setarg(paramPos,0,_:floatstr(changestr));
- }
- case 'p':
- {
- delim = format[formatPos++];
- continue;
- }
- case '\'':
- {
- new
- end = formatPos - 1,
- ch;
- while ((ch = format[++end]) && ch != '\'') {}
- if (!ch)
- {
- return -1;
- }
- format[end] = '\0';
- if ((ch = strfind(string, format[formatPos], false, stringPos)) == -1)
- {
- if (format[end + 1])
- {
- return -1;
- }
- return 0;
- }
- format[end] = '\'';
- stringPos = ch + (end - formatPos);
- formatPos = end + 1;
- }
- case 'u':
- {
- new
- end = stringPos - 1,
- id = 0,
- bool:num = true,
- ch;
- while ((ch = string[++end]) && ch != delim)
- {
- if (num)
- {
- if ('0' <= ch <= '9')
- {
- id = (id * 10) + (ch - '0');
- }
- else
- {
- num = false;
- }
- }
- }
- if (num && IsPlayerConnected(id))
- {
- setarg(paramPos, 0, id);
- }
- else
- {
- #if !defined foreach
- #define foreach(%1,%2) for (new %2 = 0; %2 < MAX_PLAYERS; %2++) if (IsPlayerConnected(%2))
- #define __SSCANF_FOREACH__
- #endif
- string[end] = '\0';
- num = false;
- new
- name[MAX_PLAYER_NAME];
- id = end - stringPos;
- foreach (Player, playerid)
- {
- GetPlayerName(playerid, name, sizeof (name));
- if (!strcmp(name, string[stringPos], true, id))
- {
- setarg(paramPos, 0, playerid);
- num = true;
- break;
- }
- }
- if (!num)
- {
- setarg(paramPos, 0, INVALID_PLAYER_ID);
- }
- string[end] = ch;
- #if defined __SSCANF_FOREACH__
- #undef foreach
- #undef __SSCANF_FOREACH__
- #endif
- }
- stringPos = end;
- }
- case 's', 'z':
- {
- new
- i = 0,
- ch;
- if (format[formatPos])
- {
- while ((ch = string[stringPos++]) && ch != delim)
- {
- setarg(paramPos, i++, ch);
- }
- if (!i)
- {
- return -1;
- }
- }
- else
- {
- while ((ch = string[stringPos++]))
- {
- setarg(paramPos, i++, ch);
- }
- }
- stringPos--;
- setarg(paramPos, i, '\0');
- }
- default:
- {
- continue;
- }
- }
- while (string[stringPos] && string[stringPos] != delim && string[stringPos] > ' ')
- {
- stringPos++;
- }
- while (string[stringPos] && (string[stringPos] == delim || string[stringPos] <= ' '))
- {
- stringPos++;
- }
- paramPos++;
- }
- do
- {
- if ((delim = format[formatPos++]) > ' ')
- {
- if (delim == '\'')
- {
- while ((delim = format[formatPos++]) && delim != '\'') {}
- }
- else if (delim != 'z')
- {
- return delim;
- }
- }
- }
- while (delim > ' ');
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement