Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <a_samp>
- #include <a_vehicles>
- #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 MaxJobs 20
- #define MaxCheckpoints 70
- #define ENTGELD 1975
- #define TRINKGELD "ON"
- #define TRINKGELDBETRAG 90 // die random() Fuktion wählt eine Zufallszahl aus die unter dem TRINKGELDBETRAG liegt.
- new Missions = 0;
- new JobID[MAX_PLAYERS];
- new JobCar[MaxJobs];
- new Checkpoint[MAX_PLAYERS];
- new bool:mission[MAX_PLAYERS];
- new checkpoints = 0;
- new InProcess[MAX_PLAYERS];
- new bool:pJobVehicle[MAX_PLAYERS];
- forward IsAJobCar(carid);
- forward missionfailed(playerid);
- forward LoadMissions();
- forward CheckCar(playerid);
- #define COLOR_LIGHTGREEN 0x86FF59FF
- #define COLOR_RED 0xFF0000FF
- #define COLOR_GREEN 0x00CA00FF
- enum p_infos
- {
- Name[64],
- Model,
- Float:xx,
- Float:yy,
- Float:zz,
- Float:rr,
- Color1,
- Color2,
- Float:Checkpoints_x[MaxCheckpoints],
- Float:Checkpoints_y[MaxCheckpoints],
- Float:Checkpoints_z[MaxCheckpoints]
- };
- new JobInfo[MAX_PLAYERS][p_infos];
- public OnFilterScriptInit()
- {
- print("|=> Job Creator 1.0 by AlexandA <=|");
- LoadMissions();
- return 1;
- }
- public OnFilterScriptExit()
- {
- return 1;
- }
- public OnGameModeExit() {
- return 1;
- }
- public OnPlayerRequestClass(playerid, classid) {
- return 1;
- }
- public OnPlayerRequestSpawn(playerid) {
- return 1;
- }
- public OnPlayerConnect(playerid)
- {
- mission[playerid] = false;
- InProcess[playerid] = 0;
- Checkpoint[playerid] = 0;
- JobID[playerid] = 0;
- pJobVehicle[playerid] = false;
- return 1;
- }
- public OnPlayerCommandText(playerid, cmdtext[])
- {
- dcmd(starten, 7, cmdtext);
- dcmd(neu, 3, cmdtext);
- dcmd(hier, 4, cmdtext);
- dcmd(check, 5, cmdtext);
- dcmd(fertig, 6, cmdtext);
- dcmd(raus, 4, cmdtext);
- return 0;
- }
- dcmd_raus(playerid, params[])
- {
- #pragma unused params
- if(pJobVehicle[playerid] == false) { return SendClientMessage(playerid, COLOR_RED, "Diese Aktion kannst du mit diesem Fahrzeug nicht ausführen!"); }
- RemovePlayerFromVehicle(playerid);
- TogglePlayerControllable(playerid, 1);
- OnPlayerExitVehicle(playerid, GetPlayerVehicleID(playerid));
- return 1;
- }
- dcmd_fertig(playerid, params[])
- {
- #pragma unused params
- if(InProcess[playerid] != 6) { return SendClientMessage(playerid, COLOR_RED, "Das kannst du noch nicht !"); }
- new
- Float:x,
- Float:y,
- Float:z,
- string[64],
- key[64];
- SendClientMessage(playerid, COLOR_RED, "Speicher Daten...");
- new File:Liste;
- Liste = fopen("Jobs/Liste.txt", io_append);
- format(string,sizeof(string), "%s|",JobInfo[Missions][Name]);
- fwrite(Liste, string);
- fclose(Liste);
- format(string, sizeof(string), "Jobs/%s.cfg", JobInfo[Missions][Name]);
- dini_IntSet(string, "Model", JobInfo[Missions][Model]);
- dini_FloatSet(string, "FX", JobInfo[Missions][xx]);
- dini_FloatSet(string, "FY", JobInfo[Missions][yy]);
- dini_FloatSet(string, "FZ", JobInfo[Missions][zz]);
- dini_FloatSet(string, "FR", JobInfo[Missions][rr]);
- dini_IntSet(string, "Color1", JobInfo[Missions][Color1]);
- dini_IntSet(string, "Color2", JobInfo[Missions][Color2]);
- InProcess[playerid] = 0;
- for(new c = 1; c < 60; c++)
- {
- if(JobInfo[Missions][Checkpoints_x][c] == 0.0) { SendClientMessage(playerid, COLOR_RED, "... Daten wurden erfolgreich gespeichert."); Missions ++; return 1;}
- x = JobInfo[Missions][Checkpoints_x][c];
- y = JobInfo[Missions][Checkpoints_y][c];
- z = JobInfo[Missions][Checkpoints_z][c];
- format(key, sizeof(key), "Checkpoint_X[%d]", c);
- dini_FloatSet(string, key, x);
- format(key, sizeof(key), "Checkpoint_Y[%d]", c);
- dini_FloatSet(string, key, y);
- format(key, sizeof(key), "Checkpoint_Z[%d]", c);
- dini_FloatSet(string, key, z);
- }
- return 1;
- }
- dcmd_check(playerid, params[])
- {
- #pragma unused params
- if(InProcess[playerid] != 6) { return SendClientMessage(playerid, COLOR_RED, "Das kannst du noch nicht !"); }
- checkpoints ++;
- new Float:x,Float:z,Float:y;
- GetPlayerPos(playerid, x,y,z);
- JobInfo[Missions][Checkpoints_x][checkpoints] = x;
- JobInfo[Missions][Checkpoints_y][checkpoints] = y;
- JobInfo[Missions][Checkpoints_z][checkpoints] = z;
- SendClientMessage(playerid, COLOR_RED, "Position wurde gespeichert. Weiter gehts. Wenn du fertig bist tippe /fertig");
- return 1;
- }
- dcmd_hier(playerid, params[])
- {
- #pragma unused params
- if(InProcess[playerid] != 3) { return SendClientMessage(playerid, COLOR_RED, "Das kannst du jetzt nicht!"); }
- if(!IsPlayerInVehicle(playerid, JobCar[Missions])) { return SendClientMessage(playerid, COLOR_RED, "Du musst im Auto sitzen."); }
- new Float:x,Float:y,Float:z,Float:r;
- GetVehiclePos(JobCar[Missions], x,y,z);
- GetVehicleZAngle(JobCar[Missions], r);
- JobInfo[Missions][xx] = x;
- JobInfo[Missions][yy] = y;
- JobInfo[Missions][zz] = z;
- JobInfo[Missions][rr] = r;
- SendClientMessage(playerid, COLOR_LIGHTGREEN, "Als nächstes, gib bitte die Farbe-1 deines Fahrzeuges an.");
- InProcess[playerid] = 4;
- return 1;
- }
- dcmd_neu(playerid, params[])
- {
- #pragma unused params
- if(!IsPlayerAdmin(playerid)) { return SendClientMessage(playerid, COLOR_RED, "Du musst als Rcon-Admin eingeloggt sein!"); }
- if(InProcess[playerid] > 0) { return SendClientMessage(playerid, COLOR_RED, "Du bist schon dabei eine neue Route zu erstellen! Tippe /stop falls du abbrechen möchtest!"); }
- InProcess[playerid] = 1;
- SendClientMessage(playerid, COLOR_LIGHTGREEN, "Du bist nun dabei einen neuen Beruf zu erstellen.");
- SendClientMessage(playerid, COLOR_LIGHTGREEN, "Tippe nun den Namen deines neuen Berufes ein !");
- return 1;
- }
- dcmd_starten(playerid, params[])
- {
- #pragma unused params
- if(mission[playerid] == true) { return SendClientMessage(playerid, COLOR_RED, "Es laeuft schon ein Job!"); }
- //if(!IsAJobCar(GetPlayerVehicleID(playerid))) { return SendClientMessage(playerid, COLOR_RED, "Diese Aktion kannst du mit diesem Fahrzeug nicht ausführen!"); }
- if(pJobVehicle[playerid] == false) { return SendClientMessage(playerid, COLOR_RED, "Diese Aktion kannst du mit diesem Fahrzeug nicht ausführen!"); }
- new string[128];
- mission[playerid] = true; Checkpoint[playerid] = 0;
- JobID[playerid] = IsAJobCar(GetPlayerVehicleID(playerid));
- format(string,sizeof(string), "Du startest nun Beruf: %s", JobInfo[IsAJobCar(GetPlayerVehicleID(playerid))][Name]);
- SendClientMessage(playerid, COLOR_RED, string);
- SendClientMessage(playerid, COLOR_LIGHTGREEN, "Fahre nun zu den einzelnen Stationen. Sie sind rot auf deiner Karte markiert!");
- SetPlayerCheckpoint(playerid,JobInfo[IsAJobCar(GetPlayerVehicleID(playerid))][Checkpoints_x][1],JobInfo[IsAJobCar(GetPlayerVehicleID(playerid))][Checkpoints_y][1],JobInfo[IsAJobCar(GetPlayerVehicleID(playerid))][Checkpoints_z][1], 6.0);
- TogglePlayerControllable(playerid, 1);
- return 1;
- }
- public OnPlayerStateChange(playerid, newstate, oldstate)
- {
- if(newstate == PLAYER_STATE_DRIVER)
- {
- new carid = GetPlayerVehicleID(playerid);
- if (IsAJobCar(carid) && mission[playerid] == false)
- {
- TogglePlayerControllable(playerid, 0);
- }
- }
- return 1;
- }
- public OnPlayerExitVehicle(playerid, vehicleid)
- {
- new carid = GetPlayerVehicleID(playerid);
- if (IsAJobCar(vehicleid) || IsAJobCar(carid))
- {
- if(mission[playerid] == true)
- {
- SendClientMessage(playerid, COLOR_RED, "* Du hast 15 Sekunden um zurueck in das Job-Auto zu steigen !");
- SetTimerEx("missionfailed", 15000, 0,"d",playerid); pJobVehicle[playerid] = false;
- return 1;
- }
- else { TogglePlayerControllable(playerid, 1); }
- }
- return 1;
- }
- public OnPlayerEnterVehicle(playerid, vehicleid)
- {
- new
- string[128];
- new carid = GetPlayerVehicleID(playerid);
- if(IsAJobCar(vehicleid) || IsAJobCar(carid))
- {
- if(mission[playerid] == false)
- {
- format(string, sizeof(string), "Dies ist das Auto von dem Beruf: %s. Tippe /starten um den Beruf auszuführen. Tippe /raus um auszusteigen.",JobInfo[IsAJobCar(vehicleid)][Name]);
- SendClientMessage(playerid, COLOR_RED, string); pJobVehicle[playerid] = true; SetTimerEx("CheckCar", 5000, 0, "d", playerid);
- }}
- return 1;
- }
- public OnPlayerEnterCheckpoint(playerid)
- {
- if(mission[playerid] == false) { return 1; }
- if(!IsPlayerInAnyVehicle(playerid)) {return 1; }
- new
- trinkgeld,
- string[128];
- trinkgeld = random(TRINKGELDBETRAG);
- Checkpoint[playerid] ++;
- SendClientMessage(playerid, COLOR_RED, "Station erreicht!");
- if (!strcmp("ON", TRINKGELD , true))
- {
- GivePlayerMoney(playerid, trinkgeld);
- format(string, sizeof(string), "** Du hast %d$ Trinkgeld bekommen!",trinkgeld);
- SendClientMessage(playerid, COLOR_GREEN, string);
- }
- new vehid = GetPlayerVehicleID(playerid);
- if(JobInfo[IsAJobCar(vehid)][Checkpoints_x][Checkpoint[playerid]] == 0)
- {
- DisablePlayerCheckpoint(playerid);
- format(string, 128, "Dein Lohn beträgt: %d", ENTGELD);
- GivePlayerMoney(playerid, ENTGELD);
- SendClientMessage(playerid, COLOR_RED, string);
- mission[playerid] = false;
- Checkpoint[playerid] = 0;
- JobID[playerid] = 0;
- SendClientMessage(playerid, COLOR_RED, "Vielen Dank für deine Arbeit.");
- SetVehicleToRespawn(GetPlayerVehicleID(playerid));
- return 1;
- }
- SendClientMessage(playerid, COLOR_RED, "Weiter gehts.");
- DisablePlayerCheckpoint(playerid);
- SetPlayerCheckpoint(playerid, JobInfo[IsAJobCar(GetPlayerVehicleID(playerid))][Checkpoints_x][Checkpoint[playerid]],JobInfo[IsAJobCar(GetPlayerVehicleID(playerid))][Checkpoints_y][Checkpoint[playerid]],JobInfo[IsAJobCar(GetPlayerVehicleID(playerid))][Checkpoints_z][Checkpoint[playerid]], 6.0);
- return 1;
- }
- public missionfailed(playerid)
- {
- if(!IsAJobCar(GetPlayerVehicleID(playerid)))
- {
- SendClientMessage(playerid, COLOR_RED, "Job abgebrochen!");
- DisablePlayerCheckpoint(playerid);
- mission[playerid] = false;
- Checkpoint[playerid] = 0;
- }
- return 1;
- }
- public OnPlayerText(playerid, text[])
- {
- if(InProcess[playerid] == 1)
- {
- if(strlen(text) > 64 ) {
- return 0;
- }
- format(JobInfo[Missions][Name],strlen(text), "%s", text);
- SendClientMessage(playerid, COLOR_LIGHTGREEN, "Ok, tippe nun ModelID für dein gewünschtes Job-Fahrzeug ein");
- new
- string[128];
- format(string, sizeof(string),"Jobs/%s.cfg", text);
- if(!dini_Exists("Jobs/Liste.txt")) { dini_Create("Jobs/Liste.txt"); }
- dini_Create(string);
- InProcess[playerid] = 2;
- return 0;
- }
- if(InProcess[playerid] == 2)
- {
- if(strlen(text) > 3 ) {
- return 0;
- }
- new
- model = strval(text);
- if(model < 400 || model > 611) {
- return SendClientMessage(playerid, COLOR_RED, "Bitte nur Zahlen von 400 - 611");
- }
- new
- Float:x,
- Float:y,
- Float:z;
- GetPlayerPos(playerid, x,y,z);
- JobCar[Missions] = CreateVehicle(model, x+1.0,y,z+1.0, 0,-1,-1,60000);
- PutPlayerInVehicle(playerid, JobCar[Missions], 0);
- JobInfo[Missions][Model] = model;
- InProcess[playerid] = 3;
- }
- if(InProcess[playerid] == 3)
- {
- SendClientMessage(playerid, COLOR_LIGHTGREEN, "Fahre nun zu der Stelle wo das Auto zukünftig spawnen soll und tippe /hier");
- return 0;
- }
- if(InProcess[playerid] == 4)
- {
- if(strlen(text) > 3 ) {
- return 0;
- }
- new
- color = strval(text);
- if(color < 0 || color > 126) {
- return SendClientMessage(playerid, COLOR_RED, "Bitte nur Zahlen von 0 - 126");
- }
- JobInfo[Missions][Color1] = color;
- InProcess[playerid] = 5;
- SendClientMessage(playerid, COLOR_LIGHTGREEN, "Und nun, Farbe-2");
- return 0;
- }
- if(InProcess[playerid] == 5)
- {
- if(strlen(text) > 3 ) {
- return 0;
- }
- new
- color = strval(text);
- if(color < 0 || color > 126) {
- return SendClientMessage(playerid, COLOR_RED, "Bitte nur Zahlen von 0 - 126");
- }
- JobInfo[Missions][Color2] = color;
- ChangeVehicleColor(JobCar[Missions], JobInfo[Missions][Color1],JobInfo[Missions][Color2]);
- InProcess[playerid] = 6;
- SendClientMessage(playerid, COLOR_LIGHTGREEN, "Nun musst du deine Strecke planen und speichern.");
- SendClientMessage(playerid, COLOR_LIGHTGREEN, "Für jeden Checkpoint machst du /check");
- return 0;
- }
- return 1;
- }
- public LoadMissions()
- {
- if(!dini_Exists("Jobs/Liste.txt")) { print ("Not found Liste.txt"); return 1; }
- new str[256], Dateien[MaxJobs][32];
- new File:file = fopen("Jobs/Liste.txt",io_read);
- fread(file, str);
- fclose(file);
- split(str,Dateien,'|');
- for(new d=0; d<sizeof(Dateien); d++)
- {
- new s[30];
- format(JobInfo[Missions][Name],60,"%s",Dateien[d]);
- format(s, sizeof(s), "Jobs/%s.cfg",Dateien[d]);
- if(!dini_Exists(s)) { printf ("Not found %s", s); return 1; }
- //format(JobInfo[Missions][Name], sizeof(JobInfo[Missions][Name]),"%s", Dateien[d]);
- //strmid(JobInfo[Missions][Name],s,0,strlen(JobInfo[Missions][Name]),strlen(JobInfo[Missions][Name]));
- format(str, sizeof(str),"%s", JobInfo[Missions][Name]);
- JobInfo[Missions][Model] = dini_Int(s, "Model");
- format(str, sizeof(str),"%d", JobInfo[Missions][Model]);
- JobInfo[Missions][xx] = dini_Float(s, "FX");
- format(str, sizeof(str),"%f", JobInfo[Missions][xx]);
- JobInfo[Missions][yy] = dini_Float(s, "FY");
- format(str, sizeof(str),"%f", JobInfo[Missions][yy]);
- JobInfo[Missions][zz] = dini_Float(s, "FZ");
- format(str, sizeof(str),"%f", JobInfo[Missions][zz]);
- JobInfo[Missions][rr] = dini_Float(s, "FR");
- format(str, sizeof(str),"%f", JobInfo[Missions][rr]);
- JobInfo[Missions][Color1] = dini_Int(s, "Color1");
- format(str, sizeof(str),"%d", JobInfo[Missions][Color1]);
- JobInfo[Missions][Color2] = dini_Int(s, "Color2");
- format(str, sizeof(str),"%d", JobInfo[Missions][Color2]);
- for(new c = 1; c < 60; c++)
- {
- new key[60];
- format(key, sizeof(key), "Checkpoint_X[%d]", c);
- if(!dini_Isset(s, key)) { }
- else
- {
- JobInfo[Missions][Checkpoints_x][c] = dini_Float(s, key);
- format(key, sizeof(key), "Checkpoint_Y[%d]", c);
- JobInfo[Missions][Checkpoints_y][c] = dini_Float(s, key);
- format(key, sizeof(key), "Checkpoint_Z[%d]", c);
- JobInfo[Missions][Checkpoints_z][c] = dini_Float(s, key);
- format(str, sizeof(str), "%f,%f,%f", JobInfo[Missions][Checkpoints_x][c],JobInfo[Missions][Checkpoints_y][c],JobInfo[Missions][Checkpoints_z][c]);
- }
- }
- JobCar[Missions] = CreateVehicle(JobInfo[Missions][Model], JobInfo[Missions][xx],JobInfo[Missions][yy],JobInfo[Missions][zz],JobInfo[Missions][rr],JobInfo[Missions][Color1],JobInfo[Missions][Color2],60000);
- Missions ++;
- }
- return 1;
- }
- stock split(const strsrc[], strdest[][], delimiter)
- {
- new i, li;
- new aNum;
- new len;
- while(i <= strlen(strsrc))
- {
- if(strsrc[i] == delimiter || i == strlen(strsrc))
- {
- len = strmid(strdest[aNum], strsrc, li, i, 128);
- strdest[aNum][len] = 0;
- li = i+1;
- aNum++;
- }
- i++;
- }
- return 1;
- }
- public IsAJobCar(carid)
- {
- for(new i = 0; i < MaxJobs; i++)
- {
- if(carid == JobCar[i])
- {
- return i;
- }
- }
- return 0;
- }
- public CheckCar(playerid)
- {
- if(IsPlayerInAnyVehicle(playerid)) { return 1;}
- else { pJobVehicle[playerid] = false; return 1; }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement