Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Holzfäller by LeonMrBonnie
- #define FILTERSCRIPT
- //**************** INCLUDES **********************
- #include <a_samp>
- #include <zcmd>
- #include <sscanf2>
- #include <streamer>
- #include <foreach>
- //************************************************
- //**************** VARIABLEN *********************
- #define HTML_WHITE "{FFFFFF}"
- #define COLOR_CYAN 0x99FFFFAA
- new HolzfaellerVehicle[8];
- enum JobInfo
- {
- bool:OnDuty,
- Checkpoint,
- Vehicle,
- OldSkin,
- Step
- };
- new JobEnum[MAX_PLAYERS][JobInfo];
- new Float:BaumCheckpoints[][] =
- {
- {-599.3904,-42.7168,63.5746},
- {-587.9545,-44.0033,64.5544},
- {-587.6785,-33.5350,64.4114},
- {-597.7036,-24.4126,63.4592},
- {-588.7509,-12.0514,63.2006},
- {-578.6344,-17.9134,63.7586},
- {-573.2007,-31.3502,64.4566},
- {-576.0291,15.6816,60.8154},
- {-561.5303,12.4175,62.4453},
- {-569.8950,30.4021,59.7516},
- {-558.5754,25.6053,61.3250},
- {-543.9069,18.4923,61.0342},
- {-544.3560,30.6762,59.0382},
- {-561.4830,39.8395,58.9573}
- };
- //************************************************
- //**************** PUBLICS ***********************
- public OnFilterScriptInit()
- {
- print("Holzfäller Job geladen!");
- LoadVehicles();
- CreateDynamicActor(34, -537.3700, -96.0280, 65.3129, 0.0000);
- CreateDynamic3DTextLabel("{48D1CC}Holzfäller\n{FFFFFF}Drücke F um zu interagieren", COLOR_CYAN, -537.3700, -96.0280, 64.2129, 10);
- return 1;
- }
- public OnFilterScriptExit()
- {
- return 1;
- }
- public OnPlayerConnect(playerid)
- {
- JobEnum[playerid][OnDuty] = false;
- JobEnum[playerid][Checkpoint] = -1;
- JobEnum[playerid][Vehicle] = -1;
- JobEnum[playerid][Step] = -1;
- JobEnum[playerid][OldSkin] = -1;
- return 1;
- }
- public OnPlayerDisconnect(playerid, reason)
- {
- if(JobEnum[playerid][Vehicle] != -1)
- {
- SetVehicleToRespawn(JobEnum[playerid][Vehicle]);
- }
- return 1;
- }
- public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
- {
- if(dialogid == 12502)
- {
- if(response)
- {
- if(listitem == 0)
- {
- if(JobEnum[playerid][OnDuty]) return SendInfoMessage(playerid, "Du hast bereits einen Auftrag angenommen.");
- JobEnum[playerid][OldSkin] = GetPlayerSkin(playerid);
- SetPlayerSkin(playerid, 34);
- JobEnum[playerid][OnDuty] = true;
- JobEnum[playerid][Step] = 0;
- SendInfoMessage(playerid, "Steig nun in einen der Trucks ein.");
- }
- if(listitem == 1)
- {
- if(!JobEnum[playerid][OnDuty]) return SendInfoMessage(playerid, "Du hast noch keinen Auftrag angenommen.");
- JobEnum[playerid][OnDuty] = false;
- JobEnum[playerid][Step] = 0;
- SetVehicleToRespawn(JobEnum[playerid][Vehicle]);
- JobEnum[playerid][Vehicle] = -1;
- if(IsValidDynamicCP(JobEnum[playerid][Checkpoint])) DestroyDynamicCP(JobEnum[playerid][Checkpoint]);
- JobEnum[playerid][Checkpoint] = -1;
- SetPlayerSkin(playerid, JobEnum[playerid][OldSkin]);
- SendInfoMessage(playerid, "Du hast deinen Auftrag abgebrochen.");
- }
- }
- }
- if(dialogid == 12503)
- {
- if(response)
- {
- GivePlayerWeapon(playerid, 9, 1);
- SetPlayerArmedWeapon(playerid, 9);
- SendInfoMessage(playerid, "Du beginnst deine Tour als Holzfäller.");
- SendInfoMessage(playerid, "Fahr nun zum ersten Baum.");
- JobEnum[playerid][Step] = 3;
- CreateBaumCheckpoint(playerid);
- }
- else
- {
- RemovePlayerFromVehicle(playerid);
- SetVehicleToRespawn(JobEnum[playerid][Vehicle]);
- JobEnum[playerid][Step] = -1;
- JobEnum[playerid][OnDuty] = false;
- SetPlayerSkin(playerid, JobEnum[playerid][OldSkin]);
- }
- }
- return 0;
- }
- public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
- {
- if(newkeys == KEY_SECONDARY_ATTACK && IsPlayerInRangeOfPoint(playerid, 3.0, -537.3700, -96.0280, 62.5129))
- {
- ShowPlayerDialog(playerid, 12502, DIALOG_STYLE_LIST, "Holzfäller", "Auftrag annehmen\nAuftrag abbrechen", "Auswählen", "Schliessen");
- }
- return 1;
- }
- public OnPlayerEnterDynamicCP(playerid, checkpointid)
- {
- if(checkpointid == JobEnum[playerid][Checkpoint])
- {
- new str[32] = "BAUM WIRD GEFÄLLT...";
- convert_encoding(str);
- PlayerPlaySound(playerid, 1139, 0.0, 0.0, 0.0);
- if(JobEnum[playerid][Step] == 1)
- {
- DestroyDynamicCP(JobEnum[playerid][Checkpoint]);
- new Float:x2,Float:y2,Float:z2;
- SetVehicleVelocity(JobEnum[playerid][Vehicle], 0, 0, 0);
- GetPosBehindVehicle(JobEnum[playerid][Vehicle], x2,y2,z2);
- JobEnum[playerid][Checkpoint] = CreateDynamicCP(x2, y2, z2, 1.5, -1, -1, playerid, 5000);
- JobEnum[playerid][Step] = 2;
- SendInfoMessage(playerid, "Hol nun die Kettensäge aus dem Truck.");
- }
- else if(JobEnum[playerid][Step] == 2)
- {
- if(IsPlayerInAnyVehicle(playerid)) return 1;
- DestroyDynamicCP(JobEnum[playerid][Checkpoint]);
- new str2[32] = "KETTENSÄGE WIRD AUSGELADEN...";
- convert_encoding(str2);
- TogglePlayerControllable(playerid, 0);
- GameTextForPlayer(playerid, str2, 3500, 6);
- SetTimerEx("KettensaegeLoaded", 3300, 0, "d", playerid);
- }
- else if(JobEnum[playerid][Step] == 3 || JobEnum[playerid][Step] == 5 || JobEnum[playerid][Step] == 7 || JobEnum[playerid][Step] == 9 || JobEnum[playerid][Step] == 11)
- {
- if(IsPlayerInAnyVehicle(playerid)) return 1;
- DestroyDynamicCP(JobEnum[playerid][Checkpoint]);
- GivePlayerWeapon(playerid, 9, 1);
- SetPlayerArmedWeapon(playerid, 9);
- PreloadAnims(playerid);
- ApplyAnimation(playerid, "CHAINSAW", "WEAPON_csaw", 4.1, 1, 0, 0, 0, 5000);
- GameTextForPlayer(playerid, str, 5500, 6);
- SetTimerEx("AnimDone", 5300, 0, "d", playerid);
- }
- else if(JobEnum[playerid][Step] == 4 || JobEnum[playerid][Step] == 6 || JobEnum[playerid][Step] == 8 || JobEnum[playerid][Step] == 10 || JobEnum[playerid][Step] == 12)
- {
- if(IsPlayerInAnyVehicle(playerid)) return 1;
- DestroyDynamicCP(JobEnum[playerid][Checkpoint]);
- PreloadAnims(playerid);
- ApplyAnimation(playerid, "CARRY", "liftup", 4.1, 1, 0, 0, 0, 3000);
- GameTextForPlayer(playerid, "HOLZ WIRD EINGELADEN...", 3500, 6);
- SetTimerEx("WoodLoaded", 3300, 0, "d", playerid);
- }
- else if(JobEnum[playerid][Step] == 13)
- {
- DestroyDynamicCP(JobEnum[playerid][Checkpoint]);
- JobEnum[playerid][Checkpoint] = -1;
- SetVehicleVelocity(JobEnum[playerid][Vehicle], 0, 0, 0);
- SendInfoMessage(playerid, "Du hast das Holz erfolgreich abgeliefert. Deine Tour ist beendet.");
- ShowPlayerDialog(playerid, 12503, DIALOG_STYLE_MSGBOX, "Tour beenden","Möchtest du weiterjobben?", "Weiter", "Aufhören");
- }
- }
- return 1;
- }
- forward KettensaegeLoaded(playerid);
- public KettensaegeLoaded(playerid)
- {
- TogglePlayerControllable(playerid, 1);
- SendInfoMessage(playerid, "Fahr nun zum ersten Baum.");
- JobEnum[playerid][Step] = 3;
- CreateBaumCheckpoint(playerid);
- }
- forward WoodLoaded(playerid);
- public WoodLoaded(playerid)
- {
- if(JobEnum[playerid][Step] < 12)
- {
- RemovePlayerWeapon(playerid, 9);
- TogglePlayerControllable(playerid, 1);
- RemovePlayerAttachedObject(playerid, 0);
- SetPlayerSpecialAction(playerid, 0);
- SendInfoMessage(playerid, "Fahre nun zum nächsten Baum.");
- JobEnum[playerid][Step]++;
- CreateBaumCheckpoint(playerid);
- }
- else
- {
- RemovePlayerAttachedObject(playerid, 0);
- RemovePlayerWeapon(playerid, 9);
- SetPlayerSpecialAction(playerid, 0);
- JobEnum[playerid][Step]++;
- SendInfoMessage(playerid, "Bringe nun das Holz zum Abgabepunkt.");
- JobEnum[playerid][Checkpoint] = CreateDynamicCP(-452.4807,-48.7299,59.7661, 3.5, -1, -1, playerid, 1000);
- }
- }
- forward AnimDone(playerid);
- public AnimDone(playerid)
- {
- SetPlayerSpecialAction(playerid, 25);
- new Float:x,Float:y,Float:z;
- GetPlayerPos(playerid,x,y,z);
- SetPlayerAttachedObject(playerid, 0, 1463, 1, 0.2009, 0.5620, -0.0239, 7.3999, 88.6000, -1.9000, 0.6279, 0.3809, 0.6800, 0xFFFFFFFF, 0xFFFFFFFF);
- SendInfoMessage(playerid, "Lade das Holz nun in deinen Truck.");
- new Float:x2,Float:y2,Float:z2;
- GetPosBehindVehicle(JobEnum[playerid][Vehicle], x2,y2,z2);
- JobEnum[playerid][Checkpoint] = CreateDynamicCP(x2, y2, z2, 1.5, -1, -1, playerid, 5000);
- JobEnum[playerid][Step]++;
- }
- public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
- {
- if(JobEnum[playerid][Step] == 0 && JobEnum[playerid][OnDuty])
- {
- for(new i; i<(sizeof HolzfaellerVehicle); i++)
- {
- if(vehicleid == HolzfaellerVehicle[i])
- {
- JobEnum[playerid][Step] = 1;
- JobEnum[playerid][Vehicle] = vehicleid;
- SendInfoMessage(playerid, "Fahre nun zu den Bäumen. Begib dich zum Checkpoint.");
- JobEnum[playerid][Checkpoint] = CreateDynamicCP(-610.9353,-34.3532,62.6005, 5, -1, -1, playerid, 1000);
- }
- }
- }
- return 1;
- }
- public OnVehicleDeath(vehicleid, killerid)
- {
- for(new i; i<GetPlayerPoolSize(); i++)
- {
- if(JobEnum[i][Vehicle] == vehicleid)
- {
- SendInfoMessage(i, "Die Tour wurde vorzeitig beendet, weil dein Fahrzeug zerstört wurde.");
- JobEnum[i][OnDuty] = false;
- JobEnum[i][Step] = -1;
- JobEnum[i][Vehicle] = -1;
- if(IsValidDynamicCP(JobEnum[i][Checkpoint])) DestroyDynamicCP(JobEnum[i][Checkpoint]);
- JobEnum[i][Checkpoint] = -1;
- }
- }
- }
- public OnPlayerDeath(playerid)
- {
- if(JobEnum[playerid][OnDuty])
- {
- SendInfoMessage(playerid, "Die Tour wurde vorzeitig beendet, weil du gestorben bist.");
- JobEnum[playerid][OnDuty] = false;
- SetVehicleToRespawn(JobEnum[playerid][Vehicle]);
- JobEnum[playerid][Step] = -1;
- JobEnum[playerid][Vehicle] = -1;
- if(IsValidDynamicCP(JobEnum[playerid][Checkpoint])) DestroyDynamicCP(JobEnum[playerid][Checkpoint]);
- JobEnum[playerid][Checkpoint] = -1;
- }
- }
- //************************************************
- //**************** BEFEHLE ***********************
- //********************************************
- //*************** FUNKTIONEN *****************
- LoadVehicles()
- {
- HolzfaellerVehicle[0] = CreateVehicle(478, -500.1295, -69.3116, 61.4599, 0.6092, 37, 0, 300); //Walton
- HolzfaellerVehicle[1] = CreateVehicle(478, -491.6076, -69.2556, 61.1741, 0.0801, 37, 0, 300); //Walton
- HolzfaellerVehicle[2] = CreateVehicle(478, -496.0179, -69.3286, 61.3304, 0.1950, 37, 0, 300); //Walton
- HolzfaellerVehicle[3] = CreateVehicle(478, -479.3384, -68.0717, 60.6465, 0.4915, 37, 0, 300); //Walton
- HolzfaellerVehicle[4] = CreateVehicle(478, -486.6665, -69.2560, 60.9936, 0.3193, 37, 0, 300); //Walton
- HolzfaellerVehicle[5] = CreateVehicle(478, -483.0886, -68.1885, 60.7290, 0.4322, 37, 0, 300); //Walton
- HolzfaellerVehicle[6] = CreateVehicle(478, -471.5482, -68.1334, 60.2836, 0.1990, 37, 0, 300); //Walton
- HolzfaellerVehicle[7] = CreateVehicle(478, -475.8101, -68.0960, 60.5031, 0.2302, 37, 0, 300); //Walton
- }
- PreloadAnims(playerid)
- {
- PreloadAnimLib(playerid,"BOMBER");
- PreloadAnimLib(playerid,"RAPPING");
- PreloadAnimLib(playerid,"SHOP");
- PreloadAnimLib(playerid,"BEACH");
- PreloadAnimLib(playerid,"SMOKING");
- PreloadAnimLib(playerid,"FOOD");
- PreloadAnimLib(playerid,"ON_LOOKERS");
- PreloadAnimLib(playerid,"DEALER");
- PreloadAnimLib(playerid,"CRACK");
- PreloadAnimLib(playerid,"CARRY");
- PreloadAnimLib(playerid,"COP_AMBIENT");
- PreloadAnimLib(playerid,"PARK");
- PreloadAnimLib(playerid,"INT_HOUSE");
- PreloadAnimLib(playerid,"FOOD");
- PreloadAnimLib(playerid,"PED");
- }
- PreloadAnimLib(playerid, animlib[])
- {
- ApplyAnimation(playerid,animlib,"null",0.0,0,0,0,0,0);
- }
- SendInfoMessage(playerid, text[])
- {
- new message[100];
- format(message,sizeof(message),"[HOLZFÄLLER]: "HTML_WHITE"%s",text);
- SendClientMessage(playerid, COLOR_CYAN, message);
- return 1;
- }
- CreateBaumCheckpoint(playerid)
- {
- new cprandom = random(sizeof BaumCheckpoints);
- JobEnum[playerid][Checkpoint] = CreateDynamicCP(BaumCheckpoints[cprandom][0], BaumCheckpoints[cprandom][1], BaumCheckpoints[cprandom][2], 1.35, -1, -1, playerid, 1000);
- }
- stock GetPosBehindVehicle(vehicleid, &Float:x, &Float:y, &Float:z, Float:offset=0.5) //Credits go to MP2
- {
- new Float:vehicleSize[3], Float:vehiclePos[3];
- GetVehiclePos(vehicleid, vehiclePos[0], vehiclePos[1], vehiclePos[2]);
- GetVehicleModelInfo(GetVehicleModel(vehicleid), VEHICLE_MODEL_INFO_SIZE, vehicleSize[0], vehicleSize[1], vehicleSize[2]);
- GetXYBehindVehicle(vehicleid, vehiclePos[0], vehiclePos[1], (vehicleSize[1]/2)+offset);
- x = vehiclePos[0];
- y = vehiclePos[1];
- z = vehiclePos[2];
- return 1;
- }
- GetXYBehindVehicle(vehicleid, &Float:q, &Float:w, Float:distance)//Credits go to MP2
- {
- new Float:a;
- GetVehiclePos(vehicleid, q, w, a);
- GetVehicleZAngle(vehicleid, a);
- q += (distance * -floatsin(-a, degrees));
- w += (distance * -floatcos(-a, degrees));
- }
- stock convert_encoding(string[])
- {
- new original[50] = {192,193,194,196,198,199,200,201,202,203,204,205,206,207,210,211,212,214,217,218,219,220,223,224,225,226,228,230,231,232,233,234,235,236,237,238,239,242,243,244,246,249,250,251,252,209,241,191,161,176};
- new fixed[50] = {128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,94,124};
- new len = strlen(string);
- for (new i; i < len; i++) {
- for(new j;j < 50;j++) {
- if(string[i] == original[j]) {
- string[i] = fixed[j];
- break;
- }
- }
- }
- }
- stock RemovePlayerWeapon(playerid, pweaponid)
- {
- new plyWeapons[12];
- new plyAmmo[12];
- for(new slot = 0; slot < 12; slot++)
- {
- new pwep, pammo;
- GetPlayerWeaponData(playerid, slot, pwep, pammo);
- if(pwep != pweaponid)
- {
- GetPlayerWeaponData(playerid, slot, plyWeapons[slot], plyAmmo[slot]);
- }
- }
- ResetPlayerWeapons(playerid);
- for(new slot = 0; slot < 12; slot++)
- {
- GivePlayerWeapon(playerid, plyWeapons[slot], plyAmmo[slot]);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement