echo Executing Server Config... lanmode 0 rcon_password ********** maxplayers 50 port 7777 hostname SA-MP 0.3 Server gamemode0 grandlarc 1 filterscripts gl_actions gl_realtime gl_property gl_mapicon ls_mall ls_elevator attachments skinchanger vspawner knpc plugins FileManager announce 0 query 1 chatlogging 0 weburl www.sa-mp.com onfoot_rate 40 incar_rate 40 weapon_rate 40 stream_distance 300.0 stream_rate 1000 maxnpc 100 logtimeformat [%H:%M:%S]
//----------------------------------------------------------
//
// GRAND LARCENY 1.0
// A freeroam gamemode for SA-MP 0.3
//
//----------------------------------------------------------
#include <a_samp>
#include <core>
#include <float>
#include "../include/gl_common.inc"
#include "../include/gl_spawns.inc"
#pragma tabsize 0
//----------------------------------------------------------
#define COLOR_WHITE 0xFFFFFFFF
#define COLOR_NORMAL_PLAYER 0xFFBB7777
#define CITY_LOS_SANTOS 0
#define CITY_SAN_FIERRO 1
#define CITY_LAS_VENTURAS 2
new total_vehicles_from_files=0;
// Class selection globals
new gPlayerCitySelection[MAX_PLAYERS];
new gPlayerHasCitySelected[MAX_PLAYERS];
new gPlayerLastCitySelectionTick[MAX_PLAYERS];
new Text:txtClassSelHelper;
new Text:txtLosSantos;
new Text:txtSanFierro;
new Text:txtLasVenturas;
new thisanimid=0;
new lastanimid=0;
//----------------------------------------------------------
main()
{
print("\n---------------------------------------");
print("Running Grand Larceny - by the SA-MP team\n");
print("---------------------------------------\n");
}
//----------------------------------------------------------
public OnPlayerConnect(playerid)
{
GameTextForPlayer(playerid,"~w~Grand Larceny",3000,4);
SendClientMessage(playerid,COLOR_WHITE,"Welcome to {88AA88}G{FFFFFF}rand {88AA88}L{FFFFFF}arceny");
// class selection init vars
gPlayerCitySelection[playerid] = -1;
gPlayerHasCitySelected[playerid] = 0;
gPlayerLastCitySelectionTick[playerid] = GetTickCount();
//SetPlayerColor(playerid,COLOR_NORMAL_PLAYER);
//Kick(playerid);
/*
Removes vending machines
RemoveBuildingForPlayer(playerid, 1302, 0.0, 0.0, 0.0, 6000.0);
RemoveBuildingForPlayer(playerid, 1209, 0.0, 0.0, 0.0, 6000.0);
RemoveBuildingForPlayer(playerid, 955, 0.0, 0.0, 0.0, 6000.0);
RemoveBuildingForPlayer(playerid, 1775, 0.0, 0.0, 0.0, 6000.0);
RemoveBuildingForPlayer(playerid, 1776, 0.0, 0.0, 0.0, 6000.0);
*/
/*
new ClientVersion[32];
GetPlayerVersion(playerid, ClientVersion, 32);
printf("Player %d reports client version: %s", playerid, ClientVersion);*/
return 1;
}
//----------------------------------------------------------
public OnPlayerSpawn(playerid)
{
if(IsPlayerNPC(playerid)) return 1;
new randSpawn = 0;
SetPlayerInterior(playerid,0);
TogglePlayerClock(playerid,0);
ResetPlayerMoney(playerid);
GivePlayerMoney(playerid, 30000);
if(CITY_LOS_SANTOS == gPlayerCitySelection[playerid]) {
randSpawn = random(sizeof(gRandomSpawns_LosSantos));
SetPlayerPos(playerid,
gRandomSpawns_LosSantos[randSpawn][0],
gRandomSpawns_LosSantos[randSpawn][1],
gRandomSpawns_LosSantos[randSpawn][2]);
SetPlayerFacingAngle(playerid,gRandomSpawns_LosSantos[randSpawn][3]);
}
else if(CITY_SAN_FIERRO == gPlayerCitySelection[playerid]) {
randSpawn = random(sizeof(gRandomSpawns_SanFierro));
SetPlayerPos(playerid,
gRandomSpawns_SanFierro[randSpawn][0],
gRandomSpawns_SanFierro[randSpawn][1],
gRandomSpawns_SanFierro[randSpawn][2]);
SetPlayerFacingAngle(playerid,gRandomSpawns_SanFierro[randSpawn][3]);
}
else if(CITY_LAS_VENTURAS == gPlayerCitySelection[playerid]) {
randSpawn = random(sizeof(gRandomSpawns_LasVenturas));
SetPlayerPos(playerid,
gRandomSpawns_LasVenturas[randSpawn][0],
gRandomSpawns_LasVenturas[randSpawn][1],
gRandomSpawns_LasVenturas[randSpawn][2]);
SetPlayerFacingAngle(playerid,gRandomSpawns_LasVenturas[randSpawn][3]);
}
//SetPlayerColor(playerid,COLOR_NORMAL_PLAYER);
/*
SetPlayerSkillLevel(playerid,WEAPONSKILL_PISTOL,200);
SetPlayerSkillLevel(playerid,WEAPONSKILL_PISTOL_SILENCED,200);
SetPlayerSkillLevel(playerid,WEAPONSKILL_DESERT_EAGLE,200);
SetPlayerSkillLevel(playerid,WEAPONSKILL_SHOTGUN,200);
SetPlayerSkillLevel(playerid,WEAPONSKILL_SAWNOFF_SHOTGUN,200);
SetPlayerSkillLevel(playerid,WEAPONSKILL_SPAS12_SHOTGUN,200);
SetPlayerSkillLevel(playerid,WEAPONSKILL_MICRO_UZI,200);
SetPlayerSkillLevel(playerid,WEAPONSKILL_MP5,200);
SetPlayerSkillLevel(playerid,WEAPONSKILL_AK47,200);
SetPlayerSkillLevel(playerid,WEAPONSKILL_M4,200);
SetPlayerSkillLevel(playerid,WEAPONSKILL_SNIPERRIFLE,200);*/
GivePlayerWeapon(playerid,WEAPON_COLT45,100);
//GivePlayerWeapon(playerid,WEAPON_MP5,100);
TogglePlayerClock(playerid, 0);
return 1;
}
//----------------------------------------------------------
public OnPlayerDeath(playerid, killerid, reason)
{
new playercash;
// if they ever return to class selection make them city
// select again first
gPlayerHasCitySelected[playerid] = 0;
if(killerid == INVALID_PLAYER_ID) {
ResetPlayerMoney(playerid);
} else {
playercash = GetPlayerMoney(playerid);
if(playercash > 0) {
GivePlayerMoney(killerid, playercash);
ResetPlayerMoney(playerid);
}
}
return 1;
}
//----------------------------------------------------------
ClassSel_SetupCharSelection(playerid)
{
if(gPlayerCitySelection[playerid] == CITY_LOS_SANTOS) {
SetPlayerInterior(playerid,11);
SetPlayerPos(playerid,508.7362,-87.4335,998.9609);
SetPlayerFacingAngle(playerid,0.0);
SetPlayerCameraPos(playerid,508.7362,-83.4335,998.9609);
SetPlayerCameraLookAt(playerid,508.7362,-87.4335,998.9609);
}
else if(gPlayerCitySelection[playerid] == CITY_SAN_FIERRO) {
SetPlayerInterior(playerid,3);
SetPlayerPos(playerid,-2673.8381,1399.7424,918.3516);
SetPlayerFacingAngle(playerid,181.0);
SetPlayerCameraPos(playerid,-2673.2776,1394.3859,918.3516);
SetPlayerCameraLookAt(playerid,-2673.8381,1399.7424,918.3516);
}
else if(gPlayerCitySelection[playerid] == CITY_LAS_VENTURAS) {
SetPlayerInterior(playerid,3);
SetPlayerPos(playerid,349.0453,193.2271,1014.1797);
SetPlayerFacingAngle(playerid,286.25);
SetPlayerCameraPos(playerid,352.9164,194.5702,1014.1875);
SetPlayerCameraLookAt(playerid,349.0453,193.2271,1014.1797);
}
}
//----------------------------------------------------------
// Used to init textdraws of city names
ClassSel_InitCityNameText(Text:txtInit)
{
TextDrawUseBox(txtInit, 0);
TextDrawLetterSize(txtInit,1.25,3.0);
TextDrawFont(txtInit, 0);
TextDrawSetShadow(txtInit,0);
TextDrawSetOutline(txtInit,1);
TextDrawColor(txtInit,0xEEEEEEFF);
TextDrawBackgroundColor(txtClassSelHelper,0x000000FF);
}
//----------------------------------------------------------
ClassSel_InitTextDraws()
{
// Init our observer helper text display
txtLosSantos = TextDrawCreate(10.0, 380.0, "Los Santos");
ClassSel_InitCityNameText(txtLosSantos);
txtSanFierro = TextDrawCreate(10.0, 380.0, "San Fierro");
ClassSel_InitCityNameText(txtSanFierro);
txtLasVenturas = TextDrawCreate(10.0, 380.0, "Las Venturas");
ClassSel_InitCityNameText(txtLasVenturas);
// Init our observer helper text display
txtClassSelHelper = TextDrawCreate(10.0, 415.0,
" Press ~b~~k~~GO_LEFT~ ~w~or ~b~~k~~GO_RIGHT~ ~w~to switch cities.~n~ Press ~r~~k~~PED_FIREWEAPON~ ~w~to select.");
TextDrawUseBox(txtClassSelHelper, 1);
TextDrawBoxColor(txtClassSelHelper,0x222222BB);
TextDrawLetterSize(txtClassSelHelper,0.3,1.0);
TextDrawTextSize(txtClassSelHelper,400.0,40.0);
TextDrawFont(txtClassSelHelper, 2);
TextDrawSetShadow(txtClassSelHelper,0);
TextDrawSetOutline(txtClassSelHelper,1);
TextDrawBackgroundColor(txtClassSelHelper,0x000000FF);
TextDrawColor(txtClassSelHelper,0xFFFFFFFF);
}
//----------------------------------------------------------
ClassSel_SetupSelectedCity(playerid)
{
if(gPlayerCitySelection[playerid] == -1) {
gPlayerCitySelection[playerid] = CITY_LOS_SANTOS;
}
if(gPlayerCitySelection[playerid] == CITY_LOS_SANTOS) {
SetPlayerInterior(playerid,0);
SetPlayerCameraPos(playerid,1630.6136,-2286.0298,110.0);
SetPlayerCameraLookAt(playerid,1887.6034,-1682.1442,47.6167);
TextDrawShowForPlayer(playerid,txtLosSantos);
TextDrawHideForPlayer(playerid,txtSanFierro);
TextDrawHideForPlayer(playerid,txtLasVenturas);
}
else if(gPlayerCitySelection[playerid] == CITY_SAN_FIERRO) {
SetPlayerInterior(playerid,0);
SetPlayerCameraPos(playerid,-1300.8754,68.0546,129.4823);
SetPlayerCameraLookAt(playerid,-1817.9412,769.3878,132.6589);
TextDrawHideForPlayer(playerid,txtLosSantos);
TextDrawShowForPlayer(playerid,txtSanFierro);
TextDrawHideForPlayer(playerid,txtLasVenturas);
}
else if(gPlayerCitySelection[playerid] == CITY_LAS_VENTURAS) {
SetPlayerInterior(playerid,0);
SetPlayerCameraPos(playerid,1310.6155,1675.9182,110.7390);
SetPlayerCameraLookAt(playerid,2285.2944,1919.3756,68.2275);
TextDrawHideForPlayer(playerid,txtLosSantos);
TextDrawHideForPlayer(playerid,txtSanFierro);
TextDrawShowForPlayer(playerid,txtLasVenturas);
}
}
//----------------------------------------------------------
ClassSel_SwitchToNextCity(playerid)
{
gPlayerCitySelection[playerid]++;
if(gPlayerCitySelection[playerid] > CITY_LAS_VENTURAS) {
gPlayerCitySelection[playerid] = CITY_LOS_SANTOS;
}
PlayerPlaySound(playerid,1052,0.0,0.0,0.0);
gPlayerLastCitySelectionTick[playerid] = GetTickCount();
ClassSel_SetupSelectedCity(playerid);
}
//----------------------------------------------------------
ClassSel_SwitchToPreviousCity(playerid)
{
gPlayerCitySelection[playerid]--;
if(gPlayerCitySelection[playerid] < CITY_LOS_SANTOS) {
gPlayerCitySelection[playerid] = CITY_LAS_VENTURAS;
}
PlayerPlaySound(playerid,1053,0.0,0.0,0.0);
gPlayerLastCitySelectionTick[playerid] = GetTickCount();
ClassSel_SetupSelectedCity(playerid);
}
//----------------------------------------------------------
ClassSel_HandleCitySelection(playerid)
{
new Keys,ud,lr;
GetPlayerKeys(playerid,Keys,ud,lr);
if(gPlayerCitySelection[playerid] == -1) {
ClassSel_SwitchToNextCity(playerid);
return;
}
// only allow new selection every ~500 ms
if( (GetTickCount() - gPlayerLastCitySelectionTick[playerid]) < 500 ) return;
if(Keys & KEY_FIRE) {
gPlayerHasCitySelected[playerid] = 1;
TextDrawHideForPlayer(playerid,txtClassSelHelper);
TextDrawHideForPlayer(playerid,txtLosSantos);
TextDrawHideForPlayer(playerid,txtSanFierro);
TextDrawHideForPlayer(playerid,txtLasVenturas);
TogglePlayerSpectating(playerid,0);
return;
}
if(lr > 0) {
ClassSel_SwitchToNextCity(playerid);
}
else if(lr < 0) {
ClassSel_SwitchToPreviousCity(playerid);
}
}
//----------------------------------------------------------
public OnPlayerRequestClass(playerid, classid)
{
if(IsPlayerNPC(playerid)) return 1;
if(gPlayerHasCitySelected[playerid]) {
ClassSel_SetupCharSelection(playerid);
return 1;
} else {
if(GetPlayerState(playerid) != PLAYER_STATE_SPECTATING) {
TogglePlayerSpectating(playerid,1);
TextDrawShowForPlayer(playerid, txtClassSelHelper);
gPlayerCitySelection[playerid] = -1;
}
}
return 0;
}
//----------------------------------------------------------
public OnGameModeInit()
{
SetGameModeText("Grand Larceny");
ShowPlayerMarkers(PLAYER_MARKERS_MODE_GLOBAL);
ShowNameTags(1);
SetNameTagDrawDistance(40.0);
EnableStuntBonusForAll(0);
DisableInteriorEnterExits();
SetWeather(2);
SetWorldTime(11);
UsePlayerPedAnims();
//ManualVehicleEngineAndLights();
//LimitGlobalChatRadius(300.0);
ClassSel_InitTextDraws();
// Player Class
AddPlayerClass(281,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
AddPlayerClass(282,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
AddPlayerClass(283,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
AddPlayerClass(284,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
AddPlayerClass(285,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
AddPlayerClass(286,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
AddPlayerClass(287,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
AddPlayerClass(288,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
AddPlayerClass(289,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
AddPlayerClass(265,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
AddPlayerClass(266,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
AddPlayerClass(267,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
AddPlayerClass(268,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
AddPlayerClass(269,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
AddPlayerClass(270,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
AddPlayerClass(1,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
AddPlayerClass(2,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
AddPlayerClass(3,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
AddPlayerClass(4,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
AddPlayerClass(5,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
AddPlayerClass(6,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
AddPlayerClass(8,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
AddPlayerClass(42,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
AddPlayerClass(65,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
//AddPlayerClass(74,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
AddPlayerClass(86,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
AddPlayerClass(119,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
AddPlayerClass(149,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
AddPlayerClass(208,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
AddPlayerClass(273,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
AddPlayerClass(289,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
AddPlayerClass(47,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
AddPlayerClass(48,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
AddPlayerClass(49,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
AddPlayerClass(50,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
AddPlayerClass(51,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
AddPlayerClass(52,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
AddPlayerClass(53,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
AddPlayerClass(54,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
AddPlayerClass(55,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
AddPlayerClass(56,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
AddPlayerClass(57,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
AddPlayerClass(58,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
AddPlayerClass(68,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
AddPlayerClass(69,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
AddPlayerClass(70,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
AddPlayerClass(71,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
AddPlayerClass(72,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
AddPlayerClass(73,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
AddPlayerClass(75,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
AddPlayerClass(76,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
AddPlayerClass(78,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
AddPlayerClass(79,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
AddPlayerClass(80,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
AddPlayerClass(81,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
AddPlayerClass(82,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
AddPlayerClass(83,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
AddPlayerClass(84,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
AddPlayerClass(85,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
AddPlayerClass(87,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
AddPlayerClass(88,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
AddPlayerClass(89,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
AddPlayerClass(91,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
AddPlayerClass(92,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
AddPlayerClass(93,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
AddPlayerClass(95,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
AddPlayerClass(96,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
AddPlayerClass(97,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
AddPlayerClass(98,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
AddPlayerClass(99,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
// SPECIAL
total_vehicles_from_files += LoadStaticVehiclesFromFile("vehicles/trains.txt");
total_vehicles_from_files += LoadStaticVehiclesFromFile("vehicles/pilots.txt");
// LAS VENTURAS
total_vehicles_from_files += LoadStaticVehiclesFromFile("vehicles/lv_law.txt");
total_vehicles_from_files += LoadStaticVehiclesFromFile("vehicles/lv_airport.txt");
total_vehicles_from_files += LoadStaticVehiclesFromFile("vehicles/lv_gen.txt");
// SAN FIERRO
total_vehicles_from_files += LoadStaticVehiclesFromFile("vehicles/sf_law.txt");
total_vehicles_from_files += LoadStaticVehiclesFromFile("vehicles/sf_airport.txt");
total_vehicles_from_files += LoadStaticVehiclesFromFile("vehicles/sf_gen.txt");
// LOS SANTOS
total_vehicles_from_files += LoadStaticVehiclesFromFile("vehicles/ls_law.txt");
total_vehicles_from_files += LoadStaticVehiclesFromFile("vehicles/ls_airport.txt");
total_vehicles_from_files += LoadStaticVehiclesFromFile("vehicles/ls_gen_inner.txt");
total_vehicles_from_files += LoadStaticVehiclesFromFile("vehicles/ls_gen_outer.txt");
// OTHER AREAS
total_vehicles_from_files += LoadStaticVehiclesFromFile("vehicles/whetstone.txt");
total_vehicles_from_files += LoadStaticVehiclesFromFile("vehicles/bone.txt");
total_vehicles_from_files += LoadStaticVehiclesFromFile("vehicles/flint.txt");
total_vehicles_from_files += LoadStaticVehiclesFromFile("vehicles/tierra.txt");
total_vehicles_from_files += LoadStaticVehiclesFromFile("vehicles/red_county.txt");
printf("Total vehicles from files: %d",total_vehicles_from_files);
return 1;
}
//----------------------------------------------------------
public OnPlayerUpdate(playerid)
{
if(!IsPlayerConnected(playerid)) return 0;
if(IsPlayerNPC(playerid)) return 1;
// changing cities by inputs
if( !gPlayerHasCitySelected[playerid] &&
GetPlayerState(playerid) == PLAYER_STATE_SPECTATING ) {
ClassSel_HandleCitySelection(playerid);
return 1;
}
// No weapons in interiors
if(GetPlayerInterior(playerid) != 0 && GetPlayerWeapon(playerid) != 0) {
SetPlayerArmedWeapon(playerid,0); // fists
return 0; // no syncing until they change their weapon
}
// Don't allow minigun
if(GetPlayerWeapon(playerid) == WEAPON_MINIGUN) {
Kick(playerid);
return 0;
}
/* No jetpacks allowed
if(GetPlayerSpecialAction(playerid) == SPECIAL_ACTION_USEJETPACK) {
Kick(playerid);
return 0;
}*/
/* For testing animations
new msg[128+1];
new animlib[32+1];
new animname[32+1];
thisanimid = GetPlayerAnimationIndex(playerid);
if(lastanimid != thisanimid)
{
GetAnimationName(thisanimid,animlib,32,animname,32);
format(msg, 128, "anim(%d,%d): %s %s", lastanimid, thisanimid, animlib, animname);
lastanimid = thisanimid;
SendClientMessage(playerid, 0xFFFFFFFF, msg);
}*/
return 1;
}
//----------------------------------------------------------
#include <a_samp>
#include <filemanager.inc>
new recording[MAX_PLAYERS] = 5;
new rids[51]=0;
new pnpcid[MAX_PLAYERS]=-1;
new caridnpcfuck[MAX_PLAYERS];
new strfuck[32];
new isnpcincar[51]=0;
new namesplit[51][51];
new fuckerskin[51];
new n00b;
new Text3D:bitch[MAX_PLAYERS];
forward lulz(); //UPDATE SKINS - it is timer because some gamemodes change skin on spawn lol
public OnFilterScriptInit()
{
print("\n----------------------------------");
print("InGame NPC editor by Kurence loaded!");
print("----------------------------------\n");
for(new i=0;i<51;i++){
new filename[64],scriptname[32];
format(filename,sizeof(filename),"daddycar%d.cfg",i);
format(scriptname,sizeof(scriptname),"scriptfiles/daddycar%d.cfg",i);
if(!fexist(filename)) file_create(scriptname);
format(filename,sizeof(filename),"daddyskin%d.cfg",i);
format(scriptname,sizeof(scriptname),"scriptfiles/daddyskin%d.cfg",i);
if(!fexist(filename)) file_create(scriptname);
}
for(new i=0;i<51;i++){
new filename[64],nickname[32],scriptname[32];
format(filename,sizeof(filename),"daddycar%d.cfg",i);
new File:fuckingfile=fopen(filename, io_read);
new value[32];
fread(fuckingfile,value);
fclose(fuckingfile);
caridnpcfuck[i]=strval(value);
format(filename,sizeof(filename),"daddyskin%d.cfg",i);
fuckingfile=fopen(filename, io_read);
fread(fuckingfile,value);
fclose(fuckingfile);
fuckerskin[i]=strval(value);
format(filename,sizeof(filename),"npcmodes/recordings/daddycar%d.rec",i);
format(nickname,sizeof(nickname),"Kurence%d",i);
format(scriptname,sizeof(scriptname),"daddycar%d",i);
if(file_exists(filename)) ConnectNPC(nickname,scriptname);
format(filename,sizeof(filename),"npcmodes/recordings/daddyfoot%d.rec",i);
format(scriptname,sizeof(scriptname),"daddyfoot%d",i);
if(file_exists(filename)) ConnectNPC(nickname,scriptname);
}
SetTimer("lulz",1000,1);
return 1;
}
public OnFilterScriptExit()
{
print("\n------------------------------------");
print("InGame NPC editor by Kurence unloaded!");
print("------------------------------------\n");
for(new i;i<MAX_PLAYERS;i++){
GetPlayerName(i,strfuck,sizeof(strfuck));
new fuckername[32];
GetPlayerName(i,fuckername,sizeof(fuckername));
if(IsPlayerNPC(i) && !strcmp("Kurence",fuckername,false,7))Kick(i);
}
return 1;
}
public OnPlayerCommandText(playerid,cmdtext[]){
new cmd[128], idx;
cmd = strtok(cmdtext, idx);
if(!strcmp("/knicks",cmdtext)){
if(n00b==0){
for(new i;i<MAX_PLAYERS;i++){
GetPlayerName(i,strfuck,sizeof(strfuck));
if(IsPlayerNPC(i) && !strcmp("Kurence",strfuck,false,7)){
GetPlayerName(i,strfuck,sizeof(strfuck));
bitch[i] = Create3DTextLabel(strfuck,0x28BA9AFF,0,0,0,200,-1,0);
Attach3DTextLabelToPlayer(bitch[i],i,0,0,0.3);
}
}
SendClientMessage(playerid,0x00FF0000,"NPC nicknames enabled");
n00b=1;
return 1;
}
else{
for(new i;i<MAX_PLAYERS;i++){
Delete3DTextLabel(bitch[i]);
}
SendClientMessage(playerid,0x00FF0000,"NPC nicknames disabled");
n00b=0;
return 1;
}
}
if(!strcmp("/knpchelp",cmdtext)){
SendClientMessage(playerid,0xFF000000,"In-Game NPC maker by Kurence");
SendClientMessage(playerid,0x00FF0000,"COMMANDS:");
SendClientMessage(playerid,0x00FF0000,"/knpc [ID 0-100] - start/stop recording npc (PLAYER_RECORDING_TYPE will depend on your current state (on foot/driver)");
SendClientMessage(playerid,0x00FF0000,"/knpclist - show list of currently connected NPC's");
SendClientMessage(playerid,0x00FF0000,"/kremove [ID 0-100] - remove NPC (or use '/kremove all' to remove all NPCs)");
SendClientMessage(playerid,0x00FF0000,"/knicks - show/hide nicknames of NPC's");
SendClientMessage(playerid,0x00FF0000,"/knpchelp - show list of commands");
return 1;
}
if(!strcmp("/knpclist",cmd)){
new tmp[128];
tmp = strtok(cmdtext, idx);
SendClientMessage(playerid,0xFF000000,"[NPCID] [NICKNAME] [PLAYERID]");
for(new i;i<MAX_PLAYERS;i++){
if(IsPlayerConnected(i)){
GetPlayerName(i,strfuck,sizeof(strfuck));
if(!strcmp("Kurence",strfuck,false,7)){
split(strfuck,namesplit,'e');
new msg[64];
format(msg,sizeof(msg),"%d %s %d",strval(namesplit[2]),strfuck,i);
SendClientMessage(playerid,0xFF000000,msg);
}
}
}
return 1;
}
if (!strcmp("/kremove",cmd)){
new tmp[128];
tmp = strtok(cmdtext, idx);
if(!strcmp("all",tmp) && strlen(tmp)==3){
SendClientMessage(playerid,0xFF000000,"Removing all NPC's...");
for(new i;i<MAX_PLAYERS;i++){
GetPlayerName(i,strfuck,sizeof(strfuck));
if(!strcmp("Kurence",strfuck,false,7))Kick(i);
new filename[64];
format(filename,sizeof(filename),"npcmodes/recordings/daddycar%d.rec",i);
if(file_exists(filename)) file_delete(filename);
format(filename,sizeof(filename),"npcmodes/recordings/daddyfoot%d.rec",i);
if(file_exists(filename)) file_delete(filename);
}
return 1;
}
if(!strlen(tmp)) return SendClientMessage(playerid,0xFF000000,"Usage: /kremove [ID] - Valid IDs: 0-100 or /kremove all");
if(strval(tmp)>100 || strval(tmp)<0) return SendClientMessage(playerid,0xFF000000,"Usage: /kremove [ID] - Valid IDs: 0-100 or /kremove all");
new remmsg[64];
format(remmsg,sizeof(remmsg),"Removing NPC with ID %d",strval(tmp));
for(new i;i<MAX_PLAYERS;i++){
GetPlayerName(i,strfuck,sizeof(strfuck));
new fuckername[32];
format(fuckername,sizeof(fuckername),"Kurence%d",strval(tmp));
if (!strcmp(fuckername,strfuck)) Kick(i);
}
SendClientMessage(playerid,0x00FF0000,remmsg);
new filename[64];
format(filename,sizeof(filename),"npcmodes/recordings/daddycar%d.rec",strval(tmp));
if(file_exists(filename)) file_delete(filename);
format(filename,sizeof(filename),"npcmodes/recordings/daddyfoot%d.rec",strval(tmp));
if(file_exists(filename)) file_delete(filename);
return 1;
}
if (!strcmp("/knpc",cmd)){
new tmp[128];
tmp = strtok(cmdtext, idx);
if(pnpcid[playerid]!=-1){
if(recording[playerid] == 1){
StopRecordingPlayerData(playerid);
recording[playerid] = 5;
new filenamefuck[64],daddyslittlegirl[64];
format(filenamefuck,sizeof(filenamefuck),"npcmodes/recordings/daddyfoot%d.rec",pnpcid[playerid]);
file_delete(filenamefuck);
format(filenamefuck,sizeof(filenamefuck),"npcmodes/recordings/daddycar%d.rec",pnpcid[playerid]);
file_delete(filenamefuck);
format(filenamefuck,sizeof(filenamefuck),"scriptfiles/daddyfoot%d.rec",pnpcid[playerid]);
format(daddyslittlegirl,sizeof(daddyslittlegirl),"npcmodes/recordings/daddyfoot%d.rec",pnpcid[playerid]);
file_move(filenamefuck,daddyslittlegirl);
new fuckernamelulz[32];
format(fuckernamelulz,sizeof(fuckernamelulz),"Kurence%d",pnpcid[playerid]);
format(daddyslittlegirl,sizeof(daddyslittlegirl),"daddyfoot%d",pnpcid[playerid]);
ConnectNPC(fuckernamelulz,daddyslittlegirl);
rids[pnpcid[playerid]]=0;
pnpcid[playerid]=-1;
recording[playerid] = 5;
}
if(recording[playerid] == 2){
StopRecordingPlayerData(playerid);
recording[playerid] = 5;
new filenamefuck[64],daddyslittlegirl[64];
format(filenamefuck,sizeof(filenamefuck),"npcmodes/recordings/daddycar%d.rec",pnpcid[playerid]);
file_delete(filenamefuck);
format(filenamefuck,sizeof(filenamefuck),"npcmodes/recordings/daddyfoot%d.rec",pnpcid[playerid]);
file_delete(filenamefuck);
format(filenamefuck,sizeof(filenamefuck),"scriptfiles/daddycar%d.rec",pnpcid[playerid]);
format(daddyslittlegirl,sizeof(daddyslittlegirl),"npcmodes/recordings/daddycar%d.rec",pnpcid[playerid]);
file_move(filenamefuck,daddyslittlegirl);
new fuckernamelulz[32];
format(fuckernamelulz,sizeof(fuckernamelulz),"Kurence%d",pnpcid[playerid]);
format(daddyslittlegirl,sizeof(daddyslittlegirl),"daddycar%d",pnpcid[playerid]);
ConnectNPC(fuckernamelulz,daddyslittlegirl);
for(new i;i<MAX_PLAYERS;i++){
GetPlayerName(i,strfuck,sizeof(strfuck));
new namelulzomg[32];
format(namelulzomg,sizeof(namelulzomg),"Kurence%d",pnpcid[playerid]);
if (!strcmp(namelulzomg,strfuck)) PutPlayerInVehicle(i,caridnpcfuck[pnpcid[playerid]],0);
}
rids[pnpcid[playerid]]=0;
pnpcid[playerid]=-1;
recording[playerid] = 5;
}
}else{
if(!strlen(tmp)) return SendClientMessage(playerid,0xFF000000,"Usage: /knpc [ID] - Valid IDs: 0-100");
if(strval(tmp)>100 || strval(tmp)<0) return SendClientMessage(playerid,0xFF000000,"Usage: /knpc [ID] - Valid IDs: 0-100");
if(rids[strval(tmp)]==1) return SendClientMessage(playerid,0xFF000000,"Someone is already creating NPC with this ID!");
if(GetPlayerState(playerid) == 1){
caridnpcfuck[strval(tmp)] = -5;
new filename[32];
fuckerskin[strval(tmp)]=GetPlayerSkin(playerid);
format(filename,sizeof(filename),"daddyfoot%i",strval(tmp));
StartRecordingPlayerData(playerid, PLAYER_RECORDING_TYPE_ONFOOT,filename);
recording[playerid]=1;
rids[strval(tmp)]=1;
new msg[64];
new filename2[64];
format(filename2,sizeof(filename2),"daddyskin%i.cfg",strval(tmp));
new File:fuckingfile=fopen(filename2, io_write);
new value[64];
format(value,sizeof(value),"%d",GetPlayerSkin(playerid));
fwrite(fuckingfile,value);
fclose(fuckingfile);
isnpcincar[strval(tmp)] = 0;
format(msg,sizeof(msg),"Creating On-Foot NPC with ID %d... Use /knpc again when done",strval(tmp));
SendClientMessage(playerid,0x00FF0000,msg);
pnpcid[playerid]=strval(tmp);
for(new i;i<MAX_PLAYERS;i++){
GetPlayerName(i,strfuck,sizeof(strfuck));
new fuckername[32];
format(fuckername,sizeof(fuckername),"Kurence%d",strval(tmp));
if (!strcmp(fuckername,strfuck)) Kick(i);
}
}
else if(GetPlayerState(playerid) == 2){
new filename[32];
isnpcincar[strval(tmp)] = 1;
format(filename,sizeof(filename),"daddycar%d",strval(tmp));
StartRecordingPlayerData(playerid, PLAYER_RECORDING_TYPE_DRIVER, filename);
recording[playerid]=2;
rids[strval(tmp)]=1;
new msg[64];
fuckerskin[strval(tmp)]=GetPlayerSkin(playerid);
format(msg,sizeof(msg),"Creating In-Car NPC with ID %d... Use /knpc again when done",strval(tmp));
SendClientMessage(playerid,0x00FF0000,msg);
caridnpcfuck[strval(tmp)] = GetPlayerVehicleID(playerid);
new filename2[64];
format(filename2,sizeof(filename2),"daddycar%d.cfg",strval(tmp));
new File:fuckingfile=fopen(filename2, io_write);
new value[64];
format(value,sizeof(value),"%d",GetPlayerVehicleID(playerid));
fwrite(fuckingfile,value);
fclose(fuckingfile);
format(filename2,sizeof(filename2),"daddyskin%d.cfg",strval(tmp));
fuckingfile=fopen(filename2, io_write);
format(value,sizeof(value),"%d",GetPlayerSkin(playerid));
fwrite(fuckingfile,value);
fclose(fuckingfile);
pnpcid[playerid]=strval(tmp);
for(new i;i<MAX_PLAYERS;i++){
GetPlayerName(i,strfuck,sizeof(strfuck));
new fuckername[32];
format(fuckername,sizeof(fuckername),"Kurence%d",strval(tmp));
if (!strcmp(fuckername,strfuck)) Kick(i);
}
}
}
return 1;
}
return 0;
}
public OnPlayerConnect(playerid){
pnpcid[playerid]=-1;
if(IsPlayerNPC(playerid)) SpawnPlayer(playerid);
GetPlayerName(playerid,strfuck,sizeof(strfuck));
if(!strcmp("Kurence",strfuck,false,7)){
split(strfuck,namesplit,'e');
if(n00b==1){
GetPlayerName(playerid,strfuck,sizeof(strfuck));
bitch[playerid] = Create3DTextLabel(strfuck,0x28BA9AFF,0,0,0,200,-1,0);
Attach3DTextLabelToPlayer(bitch[playerid],playerid,0,0,0.3);
}
if(GetVehicleModel(caridnpcfuck[strval(namesplit[2])])!=0) PutPlayerInVehicle(playerid,caridnpcfuck[strval(namesplit[2])],0);
}
return 1;
}
public OnPlayerEnterVehicle(playerid,vehicleid){
if(recording[playerid] == 1){
StopRecordingPlayerData(playerid);
recording[playerid] = 5;
new filenamefuck[64],daddyslittlegirl[64];
format(filenamefuck,sizeof(filenamefuck),"npcmodes/recordings/daddyfoot%d.rec",pnpcid[playerid]);
file_delete(filenamefuck);
format(filenamefuck,sizeof(filenamefuck),"npcmodes/recordings/daddycar%d.rec",pnpcid[playerid]);
file_delete(filenamefuck);
format(filenamefuck,sizeof(filenamefuck),"scriptfiles/daddyfoot%d.rec",pnpcid[playerid]);
format(daddyslittlegirl,sizeof(daddyslittlegirl),"npcmodes/recordings/daddyfoot%d.rec",pnpcid[playerid]);
file_move(filenamefuck,daddyslittlegirl);
new fuckernamelulz[32];
format(fuckernamelulz,sizeof(fuckernamelulz),"Kurence%d",pnpcid[playerid]);
format(daddyslittlegirl,sizeof(daddyslittlegirl),"daddyfoot%d",pnpcid[playerid]);
ConnectNPC(fuckernamelulz,daddyslittlegirl);
rids[pnpcid[playerid]]=0;
pnpcid[playerid]=-1;
}
return 1;
}
public OnPlayerDisconnect(playerid,reason){
GetPlayerName(playerid,strfuck,sizeof(strfuck));
if(!strcmp("Kurence",strfuck,false,7) && n00b==1 && IsPlayerNPC(playerid)){
Delete3DTextLabel(bitch[playerid]);
}
if(recording[playerid]!=5){
StopRecordingPlayerData(playerid);
recording[playerid] = 5;
if(pnpcid[playerid]!=-1)rids[pnpcid[playerid]]=0;
pnpcid[playerid]=-1;
}
return 1;
}
public lulz(){
for(new i;i<MAX_PLAYERS;i++){
GetPlayerName(i,strfuck,sizeof(strfuck));
if(!strcmp("Kurence",strfuck,false,7)){
split(strfuck,namesplit,'e');
if(GetPlayerSkin(i) != fuckerskin[strval(namesplit[2])]){
SetPlayerSkin(i,fuckerskin[strval(namesplit[2])]);
}
}
}
}
public OnPlayerStateChange(playerid,newstate,oldstate){ // The same as OnPlayerExitVehicle (
if(oldstate==PLAYER_STATE_DRIVER && newstate==PLAYER_STATE_ONFOOT){
if(recording[playerid] == 2){
StopRecordingPlayerData(playerid);
recording[playerid] = 5;
new filenamefuck[64],daddyslittlegirl[64];
format(filenamefuck,sizeof(filenamefuck),"npcmodes/recordings/daddycar%d.rec",pnpcid[playerid]);
file_delete(filenamefuck);
format(filenamefuck,sizeof(filenamefuck),"npcmodes/recordings/daddyfoot%d.rec",pnpcid[playerid]);
file_delete(filenamefuck);
format(filenamefuck,sizeof(filenamefuck),"scriptfiles/daddycar%d.rec",pnpcid[playerid]);
format(daddyslittlegirl,sizeof(daddyslittlegirl),"npcmodes/recordings/daddycar%d.rec",pnpcid[playerid]);
file_move(filenamefuck,daddyslittlegirl);
new fuckernamelulz[32];
format(fuckernamelulz,sizeof(fuckernamelulz),"Kurence%d",pnpcid[playerid]);
format(daddyslittlegirl,sizeof(daddyslittlegirl),"daddycar%d",pnpcid[playerid]);
ConnectNPC(fuckernamelulz,daddyslittlegirl);
for(new i;i<MAX_PLAYERS;i++){
GetPlayerName(i,strfuck,sizeof(strfuck));
new namelulzomg[32];
format(namelulzomg,sizeof(namelulzomg),"Kurence%d",pnpcid[playerid]);
if (!strcmp(namelulzomg,strfuck)) PutPlayerInVehicle(i,caridnpcfuck[pnpcid[playerid]],0);
}
rids[pnpcid[playerid]]=0;
pnpcid[playerid]=-1;
}
}
return 1;
}
strtok(const string[], &index)
{
new length = strlen(string);
while ((index < length) && (string[index] <= ' '))
{
index++;
}
new offset = index;
new result[20];
while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
{
result[index - offset] = string[index];
index++;
}
result[index - offset] = EOS;
return result;
}
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;
}
|
for(new i;i<MAX_PLAYERS;i++){
GetPlayerName(i,strfuck,sizeof(strfuck)); new fuckername[32]; GetPlayerName(i,fuckername,sizeof(fuckername)); new File:fuckingfile=fopen(filename2, io_write); new value[64]; format(value,sizeof(value),"%d",GetPlayerSkin(play erid)); fwrite(fuckingfile,value); fclose(fuckingfile); etc. |