PHP Code:
|
isValidVehicleModel(modelid) return (400 <= modelid <= 611); GetVehicleMaxPassengers(iModel) { if(isValidVehicleModel(iModel)) { static s_MaxPassengers[] = { 271782163, 288428337, 288559891, -2146225407, 327282960, 271651075, 268443408, 286339857, 319894289, 823136512, 805311233, 285414161, 286331697, 268513553, 18026752, 286331152, 286261297, 286458129, 856765201, 286331137, 856690995, 269484528, 51589393, -15658689, 322109713, -15527663, 65343 }; new result = ((s_MaxPassengers[(iModel -= 400) >>> 3] >>> ((iModel & 7) << 2)) & 0xF); switch(iModel) { case 449: result = 3; // Tram case 483: result = 2; // Camper } return result; } return 0xF; } getFreeVehicleSeat(vehicleid, startSeat = 1) { if(!(vehicleid >= 1 && vehicleid < MAX_VEHICLES)) return -1; new bool:sVehicleSeats[8] = {false, ...}, seatid, maxSeats = GetVehicleMaxPassengers(GetVehicleModel(vehicleid)); if(maxSeats == 0) return -1; if(maxSeats > 8) maxSeats = 8; foreach(new i : Character) { if(IsPlayerInVehicle(i, vehicleid)) { seatid = GetPlayerVehicleSeat(i); if(seatid >= startSeat && seatid <= maxSeats && seatid != 128) sVehicleSeats[seatid] = true; } } for (new i = startSeat; i <= maxSeats; ++i) { if(!sVehicleSeats[i]) return i; } return -1; }
I have recently added all Vehicle Component costs to the wiki (https://sampwiki.blast.hk/wiki/Car_Component_ID)
This little function will allow you to get the cost of the component Code:
new vehicleComponentPrices[] = { 400, 550, 200, 250, 100, 150, 80, 500, 500, 200, 1000, 220, 250, 100, 400, 500, 200, 500, 350, 300, 250, 200, 150, 350, 50, 1000, 480, 480, 770, 680, 370, 370, 170, 120, 790, 150, 500, 690, 190, 390, 500, 390, 1000, 500, 500, 510, 710, 670, 530, 810, 620, 670, 530, 130, 210, 230, 520, 430, 620, 720, 530, 180, 550, 430, 830, 850, 750, 250, 200, 550, 450, 550, 450, 1100, 1030, 980, 1560, 1620, 1200, 1030, 900, 1230, 820, 1560, 1350, 770, 100, 1500, 150, 650, 450, 100, 750, 350, 450, 350, 1000, 620, 1140, 1000, 940, 780, 830, 3250, 1610, 1540, 780, 780, 780, 1610, 1540, 0, 0, 3340, 3250, 2130, 2050, 2040, 780, 940, 780, 940, 780, 860, 780, 1120, 3340, 3250, 3340, 1650, 3380, 3290, 1590, 830, 800, 1500, 1000, 800, 580, 470, 870, 980, 150, 150, 100, 100, 490, 600, 890, 1000, 1090, 840, 910, 1200, 1030, 1030, 920, 930, 550, 1050, 1050, 950, 650, 450, 550, 850, 950, 850, 950, 970, 880, 990, 900, 950, 1000, 900, 1000, 900, 2050, 2150, 2130, 2050, 2130, 2040, 2150, 2040, 2095, 2175, 2080, 2200, 1200, 1040, 940, 1100 }; stock GetVehicleComponentCost(componentid) { return vehicleComponentPrices[componentid - 1000]; } |
so 940 - 1000?
price: -60? Maybe, if(vehicleComponentPrices[componentid] > 1000) {vehicleComponentPrices[componentid - 1000];} |
#define frmt(%3,%4,%1,%2) new %3[%4]; \
format(%3, sizeof(%3), %1, %2)
new d[20];
format(d, 20, "Server max slot: %d", GetMaxPlayers());
printf(d);
frmt(d, 20, "Server max slot: %d", GetMaxPlayers());
printf(d);
new bool:is_occupied = false;
for(new p = 0; p < MAX_PLAYERS; p++)
{
if(!IsPlayerConnected(p)) continue; //Forgot this, foreach could be even better
if(IsPlayerInVehicle(p, i))
{
is_occupied = true;
break; //avoid any more useless loops, we know the vehicle is occupied
}
}
if(!is_occupied) //without any driver
new bool:is_occupied[MAX_VEHICLES] = false;
for(new p = 0; p < MAX_PLAYERS; p++)
{
if(!IsPlayerConnected(p)) continue; //Forgot this, foreach could be even better
if(IsPlayerInVehicle(p, i))
{
is_occupied[i] = true;
break; //avoid any more useless loops, we know the vehicle is occupied
}
}
if(!is_occupied[i]) //without any driver
Aha thanks! i edited my post with that valid thing and i'll check your implementation once i get time but just a comment shouldn't this:
PHP код:
PHP код:
|
if(!is_occupied)
Well, it would be really pointless to use an array for this case (loop through all the unoccupied vehicles), as the variable is_occupied only serves the purpose of telling you whether the vehicle with ID: i is occupied or not and if so it's value changes to true. This line:
PHP код:
If you wanted to make an array of the unoccupied vehicles (can't find a use for that) then what you propose might be possible. |
stock GetWeaponSlot(weaponid)
{
switch(weaponid)
{
case 0..1: return 0;
case 2..9: return 1;
case 22..24: return 2;
case 25..27: return 3;
case 28..29: return 4;
case 32: return 4;
case 30..31: return 5;
case 33..34: return 6;
case 35..38: return 7;
case 16..18: return 8;
case 39: return 8;
case 41..43: return 9;
case 10..15: return 10;
case 44..46: return 11;
case 40: return 12;
}
return 0;//If invalid return 0 you can change that to whatever u want
}
//===Includes===//
#include <a_samp>
#include <zcmd>
#include <sscanf2>
//-------------//
//===Variables===//
new wspy[MAX_PLAYERS];
new cwspy[MAX_PLAYERS];
new pmspy[MAX_PLAYERS];
new IsSpawned[MAX_PLAYERS];
//=================//
public OnPlayerConnect(playerid)
{
IsSpawned[playerid] = 0;
wspy[playerid] = 0;
cwspy[playerid] = 0;
pmspy[playerid] = 0;
return 1;
}
public OnPlayerSpawn(playerid)
{
IsSpawned[playerid] = 1;
return 1;
}
CMD:cw(playerid, params[])
{
if(IsSpawned[playerid] == 0) return SendClientMessage(playerid,0xf8f8f8fff,"ERROR: {f00f00}You should be spawned first!");
new string[250], textes[120], name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name,sizeof(name));
if (sscanf(params, "s[250]", string))
{
SendClientMessage(playerid, 0xf8f8f8fff, "Syntax: {f48006}/cw <message>");
}
else
{
if(IsPlayerInAnyVehicle(playerid))
{
new vehicleID = GetPlayerVehicleID(playerid);
new string2[250];
format(string2, sizeof(string2), "{adf407}[Car Whisper] {FFFFFF}%s(%i): {adf407}%s",name, playerid, string);
for(new i = 0; i <= MAX_PLAYERS; i++)
{
if(IsPlayerInVehicle(i, vehicleID))
{
SendClientMessage(i, -1, string2);
}
}
}
else
{
SendClientMessage(playerid,0xf8f8f8fff, "ERROR: {F00f00}You are not in a vehicle.");
}
for(new i = 0; i <= MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if(IsPlayerInAnyVehicle(playerid))
{
if (IsPlayerAdmin(i))
{
if (cwspy[i])
{
new cwtext[200];
format(cwtext, sizeof(cwtext), "{f00f00}[Car Whisper SPY]>> %s: %s",name, string, textes);
SendClientMessage(i, -1, cwtext);
}
}
}
}
}
}
return 1;
}
CMD:cwspy(playerid, params[])
{
if(IsSpawned[playerid] == 0) return SendClientMessage(playerid,0xf8f8f8fff,"ERROR: {f00f00}You should be spawned first!");
if(IsPlayerConnected(playerid))
{
if(IsPlayerAdmin(playerid))
{
if (cwspy[playerid])
{
cwspy[playerid] = false;
SendClientMessage(playerid, 0xf8f8f8fff, "[SERVER] {f41f07}You are not spying on car whisper.");
}
else
{
cwspy[playerid] = true;
SendClientMessage(playerid, 0xf8f8f8fff, "[SERVER] {adf407}You are now spying on car whisper.");
}
}
}
return 1;
}
CMD:w(playerid, params[])
{
new string[250];
new nameplaya[MAX_PLAYER_NAME];
new textes2[120];
GetPlayerName(playerid, nameplaya,sizeof(nameplaya));
if(IsSpawned[playerid] == 0) return SendClientMessage(playerid,0xf8f8f8fff,"ERROR: {f00f00}You should be spawned first!");
if (sscanf(params, "s[250]", string))
{
SendClientMessage(playerid, 0xf8f8f8fff, "Syntax: {f48006}/(w)hisper <message>");
}
else
{
new Float:x,Float:y,Float:z;
GetPlayerPos(playerid,x,y,z);
new string2[250];
format(string2, sizeof(string2), "{f47e07}[WHISPER] {FFFFFF}%s(%i): {f47e07}%s",nameplaya, playerid, string);
for(new i = 0; i <= MAX_PLAYERS; i++)
{
if(IsPlayerInRangeOfPoint(i, 15.0, x, y, z))
{
SendClientMessage(i, -1, string2);
PlayerPlaySound(i, 1085,0.0,0.0,0.0);
}
if(IsPlayerConnected(i))
{
if(IsPlayerAdmin(i))
{
if (wspy[i])
{
new wtext[200];
format(wtext, sizeof(wtext), "{f904e9}[WHISPER SPY]> {FFFFFF}%s: %s",nameplaya, string, textes2);
SendClientMessage(i, -1, wtext);
}
}
}
}
}
return 1;
}
COMMAND:wspy(playerid, params[])
{
if(IsSpawned[playerid] == 0) return SendClientMessage(playerid,0xf8f8f8fff,"ERROR: {f00f00}You should be spawned first!");
if(IsPlayerConnected(playerid))
{
if(IsPlayerAdmin(playerid))
{
if (wspy[playerid])
{
wspy[playerid] = false;
SendClientMessage(playerid, 0xf8f8f8fff, "[SERVER] {f41f07}You are no longer spying on WHISPERS.");
}
else
{
wspy[playerid] = true;
SendClientMessage(playerid, 0xf8f8f8fff, "[SERVER] {a1f406}You are now spying on WHISPERS.");
}
}
}
return 1;
}
//Whisper, Car Whsiper simple systems, with some administration control.
//Made by RxErT
//===Includes===//
#include <a_samp>
#include <zcmd>
#include <sscanf2>
//-------------//
//===Variables===//
new wspy[MAX_PLAYERS];
new cwspy[MAX_PLAYERS];
new pmspy[MAX_PLAYERS];
new IsSpawned[MAX_PLAYERS];
//=================//
public OnPlayerConnect(playerid)
{
IsSpawned[playerid] = 0;
wspy[playerid] = 0;
cwspy[playerid] = 0;
pmspy[playerid] = 0;
return 1;
}
public OnPlayerSpawn(playerid)
{
IsSpawned[playerid] = 1;
return 1;
}
/*Car Whisper*/
CMD:cw(playerid, params[])
{
if(IsSpawned[playerid] == 0) return SendClientMessage(playerid,0xf8f8f8fff,"ERROR: {f00f00}You should be spawned first!");
new string[250], textes[120], name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name,sizeof(name));
if (sscanf(params, "s[250]", string))
{
SendClientMessage(playerid, 0xf8f8f8fff, "Syntax: {f48006}/cw <message>");
}
else
{
if(IsPlayerInAnyVehicle(playerid))
{
new vehicleID = GetPlayerVehicleID(playerid);
new string2[250];
format(string2, sizeof(string2), "{adf407}[Car Whisper] {FFFFFF}%s(%i): {adf407}%s",name, playerid, string);
for(new i = 0; i <= MAX_PLAYERS; i++)
{
if(IsPlayerInVehicle(i, vehicleID))
{
SendClientMessage(i, -1, string2);
}
}
}
else
{
SendClientMessage(playerid,0xf8f8f8fff, "ERROR: {F00f00}You are not in a vehicle.");
}
for(new i = 0; i <= MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if(IsPlayerInAnyVehicle(playerid))
{
if (IsPlayerAdmin(i))
{
if (cwspy[i])
{
new cwtext[200];
format(cwtext, sizeof(cwtext), "{f00f00}[Car Whisper SPY]>> %s: %s",name, string, textes);
SendClientMessage(i, -1, cwtext);
}
}
}
}
}
}
return 1;
}
/* Car Whisper Spying */
CMD:cwspy(playerid, params[])
{
if(IsSpawned[playerid] == 0) return SendClientMessage(playerid,0xf8f8f8fff,"ERROR: {f00f00}You should be spawned first!");
if(IsPlayerConnected(playerid))
{
if(IsPlayerAdmin(playerid))
{
if (cwspy[playerid])
{
cwspy[playerid] = false;
SendClientMessage(playerid, 0xf8f8f8fff, "[SERVER] {f41f07}You are not spying on car whisper.");
}
else
{
cwspy[playerid] = true;
SendClientMessage(playerid, 0xf8f8f8fff, "[SERVER] {adf407}You are now spying on car whisper.");
}
}
}
return 1;
}
/*Done*/
/* Whisper */
CMD:w(playerid, params[])
{
new string[250];
new nameplaya[MAX_PLAYER_NAME];
new textes2[120];
GetPlayerName(playerid, nameplaya,sizeof(nameplaya));
if(IsSpawned[playerid] == 0) return SendClientMessage(playerid,0xf8f8f8fff,"ERROR: {f00f00}You should be spawned first!");
if (sscanf(params, "s[250]", string))
{
SendClientMessage(playerid, 0xf8f8f8fff, "Syntax: {f48006}/(w)hisper <message>");
}
else
{
new Float:x,Float:y,Float:z;
GetPlayerPos(playerid,x,y,z);
new string2[250];
format(string2, sizeof(string2), "{f47e07}[WHISPER] {FFFFFF}%s(%i): {f47e07}%s",nameplaya, playerid, string);
for(new i = 0; i <= MAX_PLAYERS; i++)
{
if(IsPlayerInRangeOfPoint(i, 15.0, x, y, z))
{
SendClientMessage(i, -1, string2);
PlayerPlaySound(i, 1085,0.0,0.0,0.0);
}
if(IsPlayerConnected(i))
{
if(IsPlayerAdmin(i))
{
if (wspy[i])
{
new wtext[200];
format(wtext, sizeof(wtext), "{f904e9}[WHISPER SPY]> {FFFFFF}%s: %s",nameplaya, string, textes2);
SendClientMessage(i, -1, wtext);
}
}
}
}
}
return 1;
}
/* Whisper spy */
COMMAND:wspy(playerid, params[])
{
if(IsSpawned[playerid] == 0) return SendClientMessage(playerid,0xf8f8f8fff,"ERROR: {f00f00}You should be spawned first!");
if(IsPlayerConnected(playerid))
{
if(IsPlayerAdmin(playerid))
{
if (wspy[playerid])
{
wspy[playerid] = false;
SendClientMessage(playerid, 0xf8f8f8fff, "[SERVER] {f41f07}You are no longer spying on WHISPERS.");
}
else
{
wspy[playerid] = true;
SendClientMessage(playerid, 0xf8f8f8fff, "[SERVER] {a1f406}You are now spying on WHISPERS.");
}
}
}
return 1;
}
/* Done */
stock IsPlayerUnderWater(playerid)
{
new PPAnim = GetPlayerAnimationIndex(playerid);
return (PPAnim == 1540 || PPAnim == 1544);
}
// Global variables enum { INT, FLOAT, STRING } new key_name[50], key_type, key_value_int, Float:key_value_float, key_value_str[128]; stock INI_GetInt(filename[], key[], &variable) { INI_ParseFile(filename, "LoadOnlyKey", .bExtra = true, .bLocal = true); format(key_name, sizeof key_name, "%s", key); key_type = INT; variable = key_value_int; } stock INI_GetFloat(filename[], key[], &Float:variable) { INI_ParseFile(filename, "LoadOnlyKey", .bExtra = true, .bLocal = true); format(key_name, sizeof key_name, "%s", key); key_type = FLOAT; variable = key_value_float; } stock INI_GetString(filename[], key[], variable[]) { INI_ParseFile(filename, "LoadOnlyKey", .bExtra = true, .bLocal = true); format(key_name, sizeof key_name, "%s", key); key_type = STRING; format(variable, sizeof variable, "%s", key_value_float); } forward LoadOnlyKey(name[], value[]) {} public LoadOnlyKey(name[], value[]) { switch(key_type) { case STRING: INI_String(key_name, key_value_str, sizeof key_value_str); case FLOAT: INI_Float(key_name, key_value_float); case INT: INI_Int(key_name, key_value_int); } return true; }
GetVehicleSpeed(vehicleid, type)
{
new s;
new Float:x, Float:y, Float:z;
GetVehicleVelocity(vehicleid, x, y, z);
switch(type)
{
case 1: s = floatround((floatsqroot(floatpower(x, 2) + floatpower(y, 2) + floatpower(z, 2)))*112.1577, floatround_round);
default: s = floatround((floatsqroot(floatpower(x, 2) + floatpower(y, 2) + floatpower(z, 2)))*180.5000, floatround_round);
}
return s;
}
type 1 - mph any other type - kmh
public sometcallaback(playerid)
{
new str[3];
format(str, sizeof(str), "%d", GetVehicleSpeed(GetPlayerVehicleID(playerid), 0));
GameTextForPlayer(playerid, str, 100, 4);
return 1;
}
stock RemovePlayerWeapon(playerid, weaponid) { if(GetPlayerWeapon(playerid) == weaponid) { GivePlayerWeapon(playerid, weaponid, -GetPlayerAmmo(playerid)); } else { new slot, weapon, ammo, currentWeapon = GetPlayerWeapon(playerid); for(new i = 0; i < 12; i++) { GetPlayerWeaponData(playerid, i, weapon, ammo); if(weapon == weaponid && ammo > 0) { GivePlayerWeapon(playerid, weaponid, -ammo); SetPlayerArmedWeapon(playerid, currentWeapon); break; } } } }
static const female_skins[] =
{
9, 10, 11, 12, 13, 31, 39, 40, 41, 53, 54, 55, 56, 63,
64, 65, 69, 75, 76, 77, 85, 87, 88, 89, 90, 91, 92, 93,
129, 130, 131, 138, 139, 140, 141, 145, 148, 150, 151, 151,
157, 169, 172, 178, 190, 191, 192, 193, 194, 195, 196, 197,
198, 199, 201, 205, 207, 211, 214, 215, 216, 218, 219, 224,
225, 226, 231, 232, 233, 237, 238, 243, 244, 245, 246, 251,
256, 257, 263, 298
};
IsFemale(playerid)
{
for(new x = 0; x < sizeof(female_skins); x++)
{
if(GetPlayerSkin(playerid) == female_skins[x]) return 1;
}
return 0;
}
CMD:gender(playerid)
{
if(IsFemale(playerid)) return SendClientMessage(playerid, 0x00FF00FF, "Female");
if(!IsFemale(playerid)) return SendClientMessage(playerid, 0xFFFF00FF, "Male");
return 1;
}
IsVehicleSeatTaken(vehicleid, seatid = 0) { for(new p = 0; p < GetMaxPlayers(); p++) { if(!IsPlayerConnected(p)) continue; if(GetPlayerVehicleID(p) == vehicleid) { switch(GetPlayerVehicleSeat(p)) { case -1: return (seatid == GetPlayerVehicleSeat(p)); case 0: return (seatid == GetPlayerVehicleSeat(p)); case 1,2,3: return (seatid == GetPlayerVehicleSeat(p)); default: return false; // to avoid being crashed because of the invalid seat id 128.... } } } return 0; }
Extra functions created by me for extract value from one key in Y_INI:
Код:
// Global variables enum { INT, FLOAT, STRING } new key_name[50], key_type, key_value_int, Float:key_value_float, key_value_str[128]; stock INI_GetInt(filename[], key[], &variable) { INI_ParseFile(filename, "LoadOnlyKey", .bExtra = true, .bLocal = true); format(key_name, sizeof key_name, "%s", key); key_type = INT; variable = key_value_int; } stock INI_GetFloat(filename[], key[], &Float:variable) { INI_ParseFile(filename, "LoadOnlyKey", .bExtra = true, .bLocal = true); format(key_name, sizeof key_name, "%s", key); key_type = FLOAT; variable = key_value_float; } stock INI_GetString(filename[], key[], variable[]) { INI_ParseFile(filename, "LoadOnlyKey", .bExtra = true, .bLocal = true); format(key_name, sizeof key_name, "%s", key); key_type = STRING; format(variable, sizeof variable, "%s", key_value_float); } forward LoadOnlyKey(name[], value[]) {} public LoadOnlyKey(name[], value[]) { switch(key_type) { case STRING: INI_String(key_name, key_value_str, sizeof key_value_str); case FLOAT: INI_Float(key_name, key_value_float); case INT: INI_Int(key_name, key_value_int); } return true; } |
Ping Kicker
Information: This snippet is all about kicking player, whose having high ping and lagging hard. -script is editable. Code: PHP код:
|