Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- |===========================================================================|
- | CREDITS |
- |---------------------------------------------------------------------------|
- |JernejL => GetPlayerFPS & Reconnect method, & encode_tires Function|
- |Double-O-Seven => Cross Product Functions |
- |Nero_3D => AdjustVector & GetPlayerCameraWeaponVector Functions |
- |wups => OnPlayerShootPlayer |
- |Y_Less => YSI |
- |The Chaoz => Scripting |
- |===========================================================================|
- */
- #if !defined _CBz_INCLUDED
- #define _CBz_INCLUDED
- #else
- #endinput
- #endif
- #include <YSI\y_hooks>
- #tryinclude <foreach>
- #define PUBLIC:%0(%1) \
- forward %0(%1); public %0(%1)
- #if !defined PRESSED
- #define PRESSED(%0) \
- (((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0)))
- #endif
- #if !defined RELEASED
- #define RELEASED(%0) \
- (((newkeys & (%0)) != (%0)) && ((oldkeys & (%0)) == (%0)))
- #endif
- #if !defined LOWER
- #define LOWER(%0) \
- for(new index; index<strlen(%0); index++)if(%0[index]>64 && %0[index]<91)%0[index] += 32
- #endif
- #if !defined foreach
- #define foreach(%1,%2) for(new %2; %2<GetMaxPlayers(); %2++) if(IsPlayerConnected(%2))
- #define __SSCANF_FOREACH__
- #endif
- #define INVALID_VEHICLE_TYPE (-1)
- #define VEHICLE_TYPE_AIRPLANE (0)
- #define VEHICLE_TYPE_HELICOPTER (1)
- #define VEHICLE_TYPE_BIKE (2)
- #define VEHICLE_TYPE_CONVERTIBLE (3)
- #define VEHICLE_TYPE_INDUSTRIAL (4)
- #define VEHICLE_TYPE_LOWRIDER (5)
- #define VEHICLE_TYPE_OFFROAD (6)
- #define VEHICLE_TYPE_PUBLICSERV (7)
- #define VEHICLE_TYPE_SALOON (8)
- #define VEHICLE_TYPE_SPORT (9)
- #define VEHICLE_TYPE_STATION (10)
- #define VEHICLE_TYPE_BOAT (11)
- #define VEHICLE_TYPE_TRAILER (12)
- #define VEHICLE_TYPE_UNIQUE (13)
- #define VEHICLE_TYPE_RC (14)
- #define PAUSE_TIME (5)
- //config
- #define AFK_TIME (30)
- #define INTERVAL (350)
- #define MAX_BWORDS (400)
- #define MAX_BNAMES (100)
- #define ENGLISH //comment this line to use spanish languaje on messajes
- #define USE_VEHICLE_DATA //coment this line to disable vehicle callbacks & functions
- #define USE_OPSP //coment this line to disable OnPlayerShootPlayer Callback
- enum _I{
- bool:pAFK,
- bool:pPaused,
- bool:pInWater,
- #if defined USE_OPSP
- bool:pShoting,
- bool:pUpdatedHealth,
- pTReleased,
- #endif
- bool:pParachuting,
- bool:pMachine,
- bool:pDriveBy,
- bool:pIntDamage,
- bool:pReconnect,
- bool:pUseMachine,
- bool:pPlayingAnim,
- bool:pCaps,
- bool:pVend,
- Float:pP[4],
- pTimer,
- pTime[2],
- pWeap,
- pVWorld,
- Float:pHealth,
- Float:pArmour,
- pMoney,
- pScore,
- pWeaps[13],
- pAmmo[13],
- pFPS,
- pDrk,
- pIP[16]
- };
- #if defined USE_VEHICLE_DATA
- enum _V{
- bool:vCreated,
- bool:vTires,
- vColor[2],
- vPlate[32],
- vInterior,
- };
- #endif
- enum _S{
- bool:sDriveby=true,
- bool:sCaps=true,
- bool:sVending=true,
- bool:sIntDamage=true
- };
- new I[MAX_PLAYERS][_I], S[_S], File:Fhnd,
- #if defined USE_VEHICLE_DATA
- V[MAX_VEHICLES+1][_V],
- #endif
- bWordsC, bWords[MAX_BWORDS][16],
- bNamesC, bNames[MAX_BNAMES][MAX_PLAYER_NAME];
- forward OnPlayerPause(playerid);
- forward OnPlayerAFK(playerid);
- forward OnPlayerWeaponChange(playerid, newweaponid, oldweaponid);
- forward OnPlayerVirtualWorldChange(playerid, newworldid, oldworldid);
- forward OnPlayerEnterWater(playerid);
- forward OnPlayerExitWater(playerid);
- forward OnPlayerHealthChange(playerid, Float:newhealth, Float:oldhealth);
- forward OnPlayerArmourChange(playerid, Float:newarmour, Float:oldarmour);
- forward OnPlayerMoneyChange(playerid, newmoney, oldmoney);
- forward OnPlayerUseVendingMachine(playerid);
- forward OnPlayerPlayAnimation(playerid, Lib[], Name[]);
- forward OnPlayerScoreChange(playerid, newscore, oldscore);
- #if defined USE_OPSP
- forward OnPlayerShotPlayer(playerid, targetid, Float:health, Float:armour, weaponid);
- #endif
- #if defined USE_VEHICLE_DATA
- forward OnVehicleCreate(vehicleid);
- forward OnVehicleDestroy(vehicleid);
- #endif
- #if defined FILTERSCRIPT
- Hook:CBz_OnFilterScriptInit()
- {
- if(fexist("ForbidenNames.cfg")){
- new line[64];
- Fhnd = fopen("ForbidenNames.cfg", io_read);
- while(fread(Fhnd, line)){
- for(new i; i<strlen(line); i++)if(line[i] == '\r' || line[i] == '\n')line[i] = '\0';
- if(strlen(line)){
- format(bNames[bNamesC], MAX_PLAYER_NAME, "%s", line);
- bNamesC++;
- }
- }
- }
- if(fexist("ForbidenWords.cfg")){
- new line[64];
- Fhnd = fopen("ForbidenWords.cfg", io_read);
- while(fread(Fhnd, line)){
- for(new i; i<strlen(line); i++)if(line[i] == '\r' || line[i] == '\n')line[i] = '\0';
- if(strlen(line)){
- format(bWords[bWordsC], MAX_PLAYER_NAME, "%s", line);
- bWordsC++;
- }
- }
- }
- new str[128];
- foreach(Player, i){
- if(!IsPlayerNPC(i)){
- if(!IsPlayerAdmin(i)){
- GetPlayerName(i, str, MAX_PLAYER_NAME);
- for(new j; j<bNamesC; j++){
- if(!strcmp(str, bNames[j], true)){
- #if defined ENGLISH
- format(str, 128, "%s(%i) has been automaticaly kicked. [Reason: Forbiden nick]", str, i);
- SendClientMessage(i, 0xFF0000FF, "Forbiden nick.");
- #else
- format(str, 128, "%s(%i) fue kickeado automaticamente. [Reason: Nick prohibido]", str, i);
- SendClientMessage(i, 0xFF0000FF, "Nick prohibido.");
- #endif
- Kick(i);
- return SendClientMessageToAll(0xA6A6A6FF, str);
- }
- }
- }
- ResetPlayer(i);
- I[i][pTime][1] = GetTickCount();
- GetPlayerHealth(i, I[i][pHealth]);
- GetPlayerArmour(i, I[i][pArmour]);
- I[i][pWeap] = GetPlayerWeapon(i);
- I[i][pMoney] = GetPlayerMoney(i);
- I[i][pTimer] = SetTimerEx("Check", INTERVAL, true, "i", i);
- }
- }
- return 1;
- }
- Hook:CBz_OnFilterScriptExit()
- {
- foreach(Player, i){
- if(!IsPlayerNPC(i)){
- if(I[i][pTimer])KillTimer(I[i][pTimer]);
- if(I[i][pReconnect]){
- new cmdstr[25];
- format(cmdstr, 23, "unbanip %s", I[i][pIP]);
- SendRconCommand(cmdstr);
- SendRconCommand("reloadbans");
- }
- }
- }
- Fhnd = fopen("ForbidenNames.cfg", io_write);
- for(new j; j<bNamesC; j++){
- fwrite(Fhnd, bNames[j]);
- fwrite(Fhnd, "\r\n");
- }
- fclose(Fhnd);
- Fhnd = fopen("ForbidenWords.cfg", io_write);
- for(new j; j<bWordsC; j++){
- fwrite(Fhnd, bWords[j]);
- fwrite(Fhnd, "\r\n");
- }
- fclose(Fhnd);
- return 1;
- }
- #else
- Hook:CBz_OnGameModeInit()
- {
- if(fexist("ForbidenNames.cfg")){
- new line[64];
- Fhnd = fopen("ForbidenNames.cfg", io_read);
- while(fread(Fhnd, line)){
- for(new i; i<strlen(line); i++)if(line[i] == '\r' || line[i] == '\n')line[i] = '\0';
- if(strlen(line)){
- format(bNames[bNamesC], MAX_PLAYER_NAME, "%s", line);
- bNamesC++;
- }
- }
- }
- if(fexist("ForbidenWords.cfg")){
- new line[64];
- Fhnd = fopen("ForbidenWords.cfg", io_read);
- while(fread(Fhnd, line)){
- for(new i; i<strlen(line); i++)if(line[i] == '\r' || line[i] == '\n')line[i] = '\0';
- if(strlen(line)){
- format(bWords[bWordsC], MAX_PLAYER_NAME, "%s", line);
- bWordsC++;
- }
- }
- }
- new str[128];
- foreach(Player, i){
- if(!IsPlayerNPC(i)){
- if(!IsPlayerAdmin(i)){
- GetPlayerName(i, str, MAX_PLAYER_NAME);
- for(new j; j<bNamesC; j++){
- if(!strcmp(str, bNames[j], true)){
- #if defined ENGLISH
- format(str, 128, "%s(%i) has been automaticaly kicked. [Reason: Forbiden nick]", str, i);
- SendClientMessage(i, 0xFF0000FF, "Forbiden nick.");
- #else
- format(str, 128, "%s(%i) fue kickeado automaticamente. [Reason: Nick prohibido]", str, i);
- SendClientMessage(i, 0xFF0000FF, "Nick prohibido.");
- #endif
- Kick(i);
- return SendClientMessageToAll(0xA6A6A6FF, str);
- }
- }
- }
- ResetPlayer(i);
- I[i][pTime][1] = GetTickCount();
- GetPlayerHealth(i, I[i][pHealth]);
- GetPlayerArmour(i, I[i][pArmour]);
- I[i][pWeap] = GetPlayerWeapon(i);
- I[i][pMoney] = GetPlayerMoney(i);
- I[i][pTimer] = SetTimerEx("Check", INTERVAL, true, "i", i);
- }
- }
- return 1;
- }
- Hook:CBz_OnGameModeExit()
- {
- foreach(Player, i){
- if(!IsPlayerNPC(i)){
- if(I[i][pTimer])KillTimer(I[i][pTimer]);
- if(I[i][pReconnect]){
- new cmdstr[25];
- format(cmdstr, 23, "unbanip %s", I[i][pIP]);
- SendRconCommand(cmdstr);
- SendRconCommand("reloadbans");
- }
- }
- }
- Fhnd = fopen("ForbidenNames.cfg", io_write);
- for(new j; j<bNamesC; j++){
- fwrite(Fhnd, bNames[j]);
- fwrite(Fhnd, "\r\n");
- }
- fclose(Fhnd);
- Fhnd = fopen("ForbidenWords.cfg", io_write);
- for(new j; j<bWordsC; j++){
- fwrite(Fhnd, bWords[j]);
- fwrite(Fhnd, "\r\n");
- }
- fclose(Fhnd);
- return 1;
- }
- #endif
- Hook:CBz_OnPlayerConnect(playerid)
- {
- if(IsPlayerNPC(playerid))return 1;
- ResetPlayer(playerid);
- I[playerid][pTimer] = SetTimerEx("Check", INTERVAL, true, "i", playerid);
- I[playerid][pTime][1] = GetTickCount();
- new str[128], name[MAX_PLAYER_NAME];
- GetPlayerName(playerid, name, MAX_PLAYER_NAME);
- for(new i; i<bNamesC; i++){
- if(!strcmp(name, bNames[i], true)){
- #if defined ENGLISH
- format(str, sizeof(str), "%s(%i) has been automaticaly kicked. [Reason: Forbiden nick]", name, playerid);
- SendClientMessage(playerid, 0xFF0000FF, "Forbiden nick.");
- #else
- format(str, sizeof(str), "%s(%i) fue kickeado automaticamente. [Reason: Nick prohibido]", name, playerid);
- SendClientMessage(playerid, 0xFF0000FF, "Nick prohibido.");
- #endif
- Kick(playerid);
- return SendClientMessageToAll(0xA6A6A6FF, str);
- }
- }
- return 1;
- }
- Hook:CBz_OnPlayerDisconnect(playerid, reason)
- {
- if(I[playerid][pTimer])KillTimer(I[playerid][pTimer]);
- if(I[playerid][pReconnect]){
- new cmdstr[25];
- I[playerid][pReconnect] = false;
- format(cmdstr, 23, "unbanip %s", I[playerid][pIP]);
- SendRconCommand(cmdstr);
- SendRconCommand("reloadbans");
- }
- return 1;
- }
- Hook:CBz_OnPlayerSpawn(playerid)
- {
- I[playerid][pTime][0] = GetTickCount();
- I[playerid][pWeap] = GetPlayerWeapon(playerid);
- I[playerid][pVWorld] = GetPlayerVirtualWorld(playerid);
- _SetPlayerHealth(playerid, 100);
- SetTimerEx("GetWeaps", 500, false, "i", playerid);
- return 1;
- }
- Hook:CBz_OnPlayerDeath(playerid, killerid, reason)
- {
- I[playerid][pTime][0] = GetTickCount();
- I[playerid][pHealth] = 0;
- return 1;
- }
- Hook:CBz_OnPlayerText(playerid, text[])
- {
- I[playerid][pTime][1] = GetTickCount();
- I[playerid][pTime][0] = GetTickCount();
- if(!I[playerid][pCaps])LOWER(text);
- new pos;
- for(new i; i<bWordsC; i++){
- pos = strfind(text, bWords[i]);
- if(pos != -1)for(new j=pos; j<(pos+strlen(bWords[i])); j++)text[j] = '*';
- }
- return 1;
- }
- Hook:CBz_OnPlayerCommandText(playerid, cmdtext[])
- {
- I[playerid][pTime][1] = GetTickCount();
- I[playerid][pTime][0] = GetTickCount();
- return 1;
- }
- Hook:OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
- {
- if(!I[playerid][pIntDamage]){
- if(!newinteriorid)for(new i; i<13; i++)GivePlayerWeapon(playerid, I[playerid][pWeaps][i], I[playerid][pAmmo][i]);
- else{
- for(new i; i<13; i++)GetPlayerWeaponData(playerid, i, I[playerid][pWeaps][i], I[playerid][pAmmo][i]);
- ResetPlayerWeapons(playerid);
- }
- }
- return 1;
- }
- Hook:CBz_OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
- {
- I[playerid][pTime][1] = GetTickCount();
- #if defined USE_OPSP
- if(I[playerid][pWeap]){
- if(PRESSED(KEY_FIRE) || PRESSED(KEY_SECONDARY_ATTACK)){
- I[playerid][pShoting] = true;
- }
- else if(RELEASED(KEY_FIRE) || RELEASED(KEY_SECONDARY_ATTACK)){
- I[playerid][pShoting] = false;
- I[playerid][pTReleased] = GetTickCount();
- }
- }
- #endif
- return 1;
- }
- Hook:CBz_OnPlayerStateChange(playerid, newstate, oldstate)
- {
- new Float:rP[10], Float:HA[2];
- I[playerid][pTime][1] = GetTickCount();
- I[playerid][pTime][0] = GetTickCount();
- #if defined USE_OPSP
- if(newstate == PLAYER_STATE_WASTED){
- if(I[playerid][pUpdatedHealth])I[playerid][pUpdatedHealth]=false;
- else{
- new Tick = (GetTickCount()-1000);
- GetPlayerHealth(playerid, HA[0]);
- GetPlayerArmour(playerid, HA[1]);
- GetPlayerCameraPos(playerid, rP[0], rP[1], rP[2]);
- foreach(Player, i){
- if(I[i][pShoting] && i != playerid && Tick < I[i][pTReleased]){
- if(IsPlayerInRangeOfPoint(i, 200.0, I[i][pP][0], I[i][pP][1], I[i][pP][2])){
- GetPlayerCameraFrontVector(playerid, rP[3], rP[4], rP[5]);
- GetPlayerCameraPos(playerid, rP[6], rP[7], rP[8]);
- GetDistanceFromPointToLine(rP[9], rP[3], rP[4], rP[5], rP[6], rP[7], rP[8], rP[0], rP[1], rP[2]);
- if(rP[9] < 2.5){
- CallLocalFunction("OnPlayerShotPlayer", "iiffi", i, playerid, (I[playerid][pHealth]-HA[0]), (I[playerid][pArmour]-HA[1]), I[playerid][pWeap]);
- break;
- }
- }
- }
- }
- }
- }
- #endif
- if(newstate == PLAYER_STATE_DRIVER){
- if(!I[playerid][pDriveBy]){
- for(new i; i<13; i++)GetPlayerWeaponData(playerid, i, I[playerid][pWeaps][i], I[playerid][pAmmo][i]);
- ResetPlayerWeapons(playerid);
- }
- }
- else if(newstate == PLAYER_STATE_ONFOOT && oldstate == PLAYER_STATE_DRIVER && !I[playerid][pDriveBy])for(new i; i<13; i++)GivePlayerWeapon(playerid, I[playerid][pWeaps][i], I[playerid][pAmmo][i]);
- return 1;
- }
- Hook:CBz_OnPlayerUpdate(playerid)
- {
- new Float:rP[10], tmp[2];
- GetPlayerPos(playerid, rP[0], rP[1], rP[2]);
- GetPlayerFacingAngle(playerid, rP[3]);
- #if defined USE_OPSP
- new Float:HA[2];
- GetPlayerHealth(playerid, HA[0]);
- GetPlayerArmour(playerid, HA[1]);
- #endif
- tmp[0] = GetPlayerDrunkLevel(playerid);
- if(floatcmp(rP[0], I[playerid][pP][0]) && floatcmp(rP[1], I[playerid][pP][1]) && floatcmp(rP[2], I[playerid][pP][2]) && floatcmp(rP[3], I[playerid][pP][3])){
- GetPlayerPos(playerid, I[playerid][pP][0], I[playerid][pP][1], I[playerid][pP][2]);
- GetPlayerFacingAngle(playerid, I[playerid][pP][3]);
- I[playerid][pTime][1] = GetTickCount();
- I[playerid][pAFK] = false;
- }
- #if defined USE_OPSP
- if(floatcmp(HA[0], I[playerid][pHealth]) || floatcmp(HA[1], I[playerid][pArmour])){
- if(I[playerid][pUpdatedHealth])I[playerid][pUpdatedHealth]=false;
- else{
- new Tick = (GetTickCount()-1000);
- GetPlayerCameraPos(playerid, rP[0], rP[1], rP[2]);
- foreach(Player, i){
- if(I[i][pShoting] && i != playerid && Tick < I[i][pTReleased]){
- if(IsPlayerInRangeOfPoint(i, 200.0, I[i][pP][0], I[i][pP][1], I[i][pP][2])){
- GetPlayerCameraFrontVector(playerid, rP[3], rP[4], rP[5]);
- GetPlayerCameraPos(playerid, rP[6], rP[7], rP[8]);
- GetDistanceFromPointToLine(rP[9], rP[3], rP[4], rP[5], rP[6], rP[7], rP[8], rP[0], rP[1], rP[2]);
- if(rP[9] < 2.5){
- CallLocalFunction("OnPlayerShotPlayer", "iiffi", i, playerid, (I[playerid][pHealth]-HA[0]), (I[playerid][pArmour]-HA[1]), I[playerid][pWeap]);
- break;
- }
- }
- }
- }
- }
- }
- #endif
- if(tmp[0] < 200)SetPlayerDrunkLevel(playerid, 2000);
- else if(I[playerid][pDrk] != tmp[0]){
- tmp[1] = I[playerid][pDrk] - tmp[0];
- if(0 < tmp[1] < 200)I[playerid][pFPS] = tmp[1];
- I[playerid][pDrk] = tmp[0];
- }
- I[playerid][pTime][0] = GetTickCount();
- if(I[playerid][pPaused])I[playerid][pPaused] = false;
- return 1;
- }
- #if defined USE_VEHICLE_DATA
- Hook:CBz_OnVehicleRespray(playerid, vehicleid, color1, color2)
- {
- V[vehicleid][vColor][0] = color1;
- V[vehicleid][vColor][1] = color2;
- return 1;
- }
- Hook:Cbz_OnVehicleDamageStatusUpdate(vehicleid, playerid)
- {
- if(V[vehicleid][vTires]){
- new tmp[4];
- GetVehicleDamageStatus(vehicleid, tmp[0], tmp[1], tmp[2], tmp[3]);
- tmp[3] = encode_tires(0, 0, 0, 0);
- UpdateVehicleDamageStatus(vehicleid, tmp[0], tmp[1], tmp[2], tmp[3]);
- }
- return 1;
- }
- #endif
- PUBLIC:Check(playerid)
- {
- if(!I[playerid][pAFK]){
- if(!I[playerid][pPaused] && (GetTickCount()-I[playerid][pTime][0])>=(PAUSE_TIME*519)){
- I[playerid][pPaused] = true;
- CallLocalFunction("OnPlayerPause", "i", playerid);
- }
- if((GetTickCount()-I[playerid][pTime][1])>=(AFK_TIME*1000)){
- I[playerid][pAFK] = true;
- CallLocalFunction("OnPlayerAFK", "i", playerid);
- }else I[playerid][pAFK] = false;
- if(!I[playerid][pPaused]){
- new tmp, Lib[2][32], Float:HA[2];
- tmp = GetPlayerWeapon(playerid);
- if(tmp != I[playerid][pWeap]){
- CallLocalFunction("OnPlayerWeaponChange", "iii", playerid, tmp, I[playerid][pWeap]);
- I[playerid][pWeap] = tmp;
- }
- tmp = GetPlayerVirtualWorld(playerid);
- if(tmp != I[playerid][pVWorld]){
- CallLocalFunction("OnPlayerVirtualWorldChange", "iii", playerid, tmp, I[playerid][pVWorld]);
- I[playerid][pVWorld] = tmp;
- }
- tmp = GetPlayerAnimationIndex(playerid);
- if(tmp){
- GetAnimationName(tmp, Lib[0], 32, Lib[1], 32);
- if(!I[playerid][pPlayingAnim])CallLocalFunction("OnPlayerPlayAnimation", "iss", playerid, Lib[0], Lib[1]);
- if(!strcmp(Lib[0], "SWIM")){
- if(!I[playerid][pInWater]){
- I[playerid][pInWater] = true;
- CallLocalFunction("OnPlayerEnterWater", "i", playerid);
- }
- }else if(I[playerid][pInWater]){
- I[playerid][pInWater] = false;
- CallLocalFunction("OnPlayerExitWater", "i", playerid);
- }
- I[playerid][pParachuting] = (!strcmp(Lib[0], "PARACHUTE") || (!strcmp(Lib[0], "ped") && !strcmp(Lib[1], "FALL_skyDive"))) ? (true) : (false);
- if(!strcmp(Lib[0], "VENDING")){
- if(!I[playerid][pMachine]){
- if(I[playerid][pUseMachine]){
- I[playerid][pMachine] = true;
- CallLocalFunction("OnPlayerUseVendingMachine", "i", playerid);
- }
- else{
- ClearAnimations(playerid, 1);
- SetTimerEx("NoVend", 40, false, "d", playerid);
- I[playerid][pVend] = true;
- }
- }
- }else I[playerid][pMachine] = false;
- I[playerid][pPlayingAnim] = true;
- }else I[playerid][pPlayingAnim] = false;
- if(!I[playerid][pVend]){
- GetPlayerHealth(playerid, HA[0]);
- if(floatcmp(HA[0], I[playerid][pHealth])){
- CallLocalFunction("OnPlayerHealthChange", "iff", playerid, HA[0], I[playerid][pHealth]);
- I[playerid][pHealth] = HA[0];
- }
- GetPlayerArmour(playerid, HA[1]);
- if(floatcmp(HA[1], I[playerid][pArmour])){
- CallLocalFunction("OnPlayerArmourChange", "iff", playerid, HA[0], I[playerid][pArmour]);
- I[playerid][pArmour] = HA[1];
- }
- tmp = GetPlayerMoney(playerid);
- if(tmp != I[playerid][pMoney]){
- CallLocalFunction("OnPlayerMoneyChange", "iii", playerid, tmp, I[playerid][pMoney]);
- I[playerid][pMoney] = tmp;
- }
- tmp = GetPlayerScore(playerid);
- if(tmp != I[playerid][pScore]){
- CallLocalFunction("OnPlayerScoreChange", "iii", playerid, tmp, I[playerid][pScore]);
- I[playerid][pScore] = tmp;
- }
- }
- }
- }
- }
- PUBLIC:GetWeaps(playerid)for(new i; i<13; i++)GetPlayerWeaponData(playerid, i, I[playerid][pWeaps][i], I[playerid][pAmmo][i]);
- PUBLIC:ForceReconnect(playerid)
- {
- new cmdstr[23];
- GetPlayerIp(playerid, I[playerid][pIP], 16);
- format(cmdstr, 23, "banip %s", I[playerid][pIP]);
- I[playerid][pReconnect] = true;
- SendRconCommand(cmdstr);
- }
- PUBLIC:NoVend(playerid)
- {
- _SetPlayerHealth(playerid, I[playerid][pHealth]);
- GivePlayerMoney(playerid, 1);
- I[playerid][pVend] = false;
- }
- stock SetPlayerAFK(playerid, bool:afk)
- {
- I[playerid][pAFK] = afk;
- return 1;
- }
- stock IsPlayerAFK(playerid)return I[playerid][pAFK];
- stock IsPlayerPaused(playerid)return I[playerid][pPaused];
- stock IsPlayerInWater(playerid)return I[playerid][pInWater];
- stock IsPlayerParachuting(playerid)return I[playerid][pParachuting];
- stock IsPlayerUsingMachine(playerid)return I[playerid][pMachine];
- stock _SetPlayerHealth(playerid, Float:health)
- {
- I[playerid][pHealth] = health;
- I[playerid][pUpdatedHealth] = true;
- return SetPlayerHealth(playerid, health);
- }
- stock _GetPlayerHealth(playerid, &Float:health){
- health = I[playerid][pHealth];
- return 1;
- }
- stock _SetPlayerArmour(playerid, Float:armour)
- {
- I[playerid][pArmour] = armour;
- I[playerid][pUpdatedHealth] = true;
- return SetPlayerArmour(playerid, armour);
- }
- stock _GetPlayerArmour(playerid, &Float:armour){
- armour = I[playerid][pArmour];
- return 1;
- }
- stock _SetPlayerMoney(playerid, amount)
- {
- I[playerid][pMoney] = amount;
- return GivePlayerMoney(playerid, -GetPlayerMoney(playerid)+amount);
- }
- stock _GivePlayerMoney(playerid, amount)
- {
- I[playerid][pMoney] += amount;
- return GivePlayerMoney(playerid, amount);
- }
- stock _GetPlayerMoney(playerid)return I[playerid][pMoney];
- stock EnableDriveBy(bool:enable)
- {
- foreach(Player, i)I[i][pDriveBy] = enable;
- S[sDriveBy] = enable;
- return 1;
- }
- stock EnablePlayerDriveBy(playerid, bool:enable)
- {
- I[playerid][pDriveBy] = enable;
- return 1;
- }
- stock EnableInteriorDamage(bool:enable)
- {
- foreach(Player, i)I[i][pIntDamage] = enable;
- sIntDamage = enable;
- return 1;
- }
- stock EnablePlayerInteriorDamage(playerid, bool:enable)
- {
- I[playerid][pIntDamage] = enable;
- return 1;
- }
- #if defined USE_VEHICLE_DATA
- stock _AddStaticVehicle(modelid, Float:spawn_x, Float:spawn_y, Float:spawn_z, Float:z_angle, color1, color2)
- {
- new vID;
- if(color1 == -1)color1 = random(127);
- if(color2 == -1)color2 = random(127);
- vID = AddStaticVehicle(modelid, spawn_x, spawn_y, spawn_z, z_angle, color1, color2);
- V[vID][vCreated] = true;
- V[vID][vColor][0] = color1;
- V[vID][vColor][1] = color2;
- format(V[vID][vPlate], 32, "XYZR 000");
- CallLocalFunction("OnVehicleCreate", "i", vID);
- return vID;
- }
- stock _AddStaticVehicleEx(modelid, Float:spawn_x, Float:spawn_y, Float:spawn_z, Float:z_angle, color1, color2, respawn_delay)
- {
- new vID;
- if(color1 == -1)color1 = random(127);
- if(color2 == -1)color2 = random(127);
- vID = AddStaticVehicleEx(modelid, spawn_x, spawn_y, spawn_z, z_angle, color1, color2, respawn_delay);
- V[vID][vCreated] = true;
- V[vID][vColor][0] = color1;
- V[vID][vColor][1] = color2;
- format(V[vID][vPlate], 32, "XYZR 000");
- CallLocalFunction("OnVehicleCreate", "i", vID);
- return vID;
- }
- stock _CreateVehicle(vehicletype, Float:x, Float:y, Float:z, Float:rotation, color1, color2, respawn_delay)
- {
- if(color1 == -1)color1 = random(127);
- if(color2 == -1)color2 = random(127);
- new vID = CreateVehicle(vehicletype, x, y, z, rotation, color1, color2, respawn_delay);
- V[vID][vCreated] = true;
- V[vID][vColor][0] = color1;
- V[vID][vColor][1] = color2;
- format(V[vID][vPlate], 32, "XYZR 000");
- CallLocalFunction("OnVehicleCreate", "i", vID);
- return vID;
- }
- stock _DestroyVehicle(vehicleid)
- {
- V[vehicleid][vCreated] = false;
- CallLocalFunction("OnVehicleDestroy", "i", vehicleid);
- return DestroyVehicle(vehicleid);
- }
- stock _ChangeVehicleColor(vehicleid, color1, color2)
- {
- V[vehicleid][vColor][0] = color1;
- V[vehicleid][vColor][1] = color2;
- return ChangeVehicleColor(vehicleid, color1, color2);
- }
- stock _SetVehicleNumberPlate(vehicleid, numberplate[])
- {
- format(V[vehicleid][vPlate], 32, "%s", numberplate);
- return SetVehicleNumberPlate(vehicleid, numberplate[])
- }
- stock GetVehiclePlate(vehicleid, Plate[], size)
- {
- format(Plate, size, "%s", V[vehicleid][vPlate]);
- return 1;
- }
- stock GetVehicleColor(vehicleid, &color1, &color2)
- {
- color1 = V[vehicleid][vColor][0];
- color2 = V[vehicleid][vColor][1];
- return 1;
- }
- stock _LinkVehicleToInterior(vehicleid, interiorid)
- {
- V[vehicleid][vInterior] = interiorid;
- return LinkVehicleToInterior(vehicleid, interiorid);
- }
- stock GetVehicleInterior(vehicleid) return V[vehicleid][vInterior];
- stock GetVehicleIDFromPlate(Plate[])
- {
- new i;
- for(i=1; i<=MAX_VEHICLES; i++)if(V[i][vCreated] && !strcmp(V[i][vPlate], Plate))break;
- if(!V[i][vCreated] || strcmp(V[i][vPlate], Plate))i=-1;
- return i;
- }
- stock IsVehicleCreated(vehicleid)return V[vehicleid][vCreated];
- #endif
- stock CrashPlayer(playerid)return ApplyAnimation(playerid, "INVALID", "INVALID", 1, 0, 0, 0, 0, 0);
- stock GetPlayerFPS(playerid)return I[playerid][pFPS];
- stock Reconnect(playerid)
- {
- new cmdstr[23];
- GetPlayerIp(playerid, I[playerid][pIP], 16);
- format(cmdstr, 23, "banip %s", I[playerid][pIP]);
- I[playerid][pReconnect] = true;
- return SendRconCommand(cmdstr);
- }
- stock ReconnectEx(playerid, time)
- {
- return SetTimerEx("ForceReconnect", time, false, "i", playerid);
- }
- stock EnableUseVendingMachines(bool:enable)
- {
- foreach(Player, i)I[i][pUseMachine] = enable;
- S[sVending] = enable;
- return 1;
- }
- stock EnableVendingMachinesForPlayer(playerid, bool:enable)
- {
- I[playerid][pUseMachine] = enable;
- return 1;
- }
- stock EnableCapsLock(bool:enable)
- {
- foreach(Player, i)I[i][pCaps] = enable;
- S[sCaps] = enable;
- return 1;
- }
- stock EnableCapsForPlayer(playerid, bool:enable)
- {
- I[playerid][pCaps] = enable;
- return 1;
- }
- stock _SetPlayerScore(playerid, score)
- {
- I[playerid][pScore] = score;
- return SetPlayerScore(playerid, score);
- }
- stock GivePlayerScore(playerid, score)
- {
- I[playerid][pScore] += score;
- return SetPlayerScore(playerid, I[playerid][pScore]);
- }
- stock GetOnlinePlayers(bool:CountNPC)
- {
- static c;
- if(CountNPC)foreach(Player, i)c++;
- else foreach(Player, i)if(!IsPlayerNPC(i))c++;
- return c;
- }
- stock AddForbidenNick(nick[])
- {
- for(new j; j<bNamesC; j++)if(!strcmp(nick, bNames[j], true))return 0;
- if(bNamesC == MAX_BNAMES-1)return 0;
- format(bNames[bNamesC], MAX_PLAYER_NAME, "%s", nick);
- bNamesC++;
- return 1;
- }
- stock AddForbidenWord(word[])
- {
- for(new j; j<bWordsC; j++)if(!strcmp(word, bWords[j], true))return 0;
- if(bWordsC == MAX_BWORDS-1)return 0;
- format(bWords[bWordsC], 16, "%s", word);
- bWordsC++;
- return 1;
- }
- stock _SetPlayerName(playerid, name[])
- {
- if(fexist("ForbidenNames.cfg")){
- new line[64];
- Fhnd = fopen("ForbidenNames.cfg", io_read);
- while(fread(Fhnd, line))if(!strcmp(line, name))return 0;
- fclose(Fhnd);
- }
- return SetPlayerName(playerid, nick);
- }
- #if defined USE_VEHICLE_DATA
- stock EnableTiresDamage(bool:enable)
- {
- for(new i=1; i<=2000; i++)V[i][vTires] = enable;
- return 1;
- }
- stock EnableTiresDamageForVehicle(vehicleid, bool:enable)
- {
- V[vehicleid][vTires] = enable;
- return 1;
- }
- stock GetVehicleType(model)
- {
- switch(model){
- case 460, 476, 511, 512, 519, 520, 553, 577, 592, 593:return VEHICLE_TYPE_AIRPLANE;
- case 417, 425, 447, 469 ,487, 488, 497, 548, 563:return VEHICLE_TYPE_HELICOPTER;
- case 448, 461 .. 463, 468, 471, 481, 509, 510, 521 .. 523, 581, 586:return VEHICLE_TYPE_BIKE;
- case 439, 480, 533, 555:return VEHICLE_TYPE_CONVERTIBLE;
- case 403, 408, 413, 414, 422, 440, 443, 455, 456, 459, 478, 482, 498, 499, 514, 515, 524, 531, 543, 552, 554, 578, 582, 600, 605, 609:return VEHICLE_TYPE_INDUSTRIAL;
- case 412, 534 .. 536, 566, 567, 575, 576:return VEHICLE_TYPE_LOWRIDER;
- case 400, 424, 444, 470, 489, 495, 500, 505, 556, 557, 568, 573, 579:return VEHICLE_TYPE_OFFROAD;
- case 407, 416, 420, 427, 431, 432, 433, 437, 438, 490, 528, 544, 596 .. 599, 601:return VEHICLE_TYPE_PUBLICSERV;
- case 401, 405, 410, 419, 421, 426, 436, 445, 466, 491, 492, 504, 507, 516 ..518, 526, 527, 529, 542, 546, 547, 549, 550, 560, 551, 562, 580, 585, 604:return VEHICLE_TYPE_SALOON;
- case 402, 411, 415, 429, 451, 475, 477, 494, 496, 541, 502, 503, 506, 558, 559, 565, 587, 589, 602, 603:return VEHICLE_TYPE_SPORT;
- case 404, 418, 458, 479, 561:return VEHICLE_TYPE_STATION;
- case 430, 446, 452, 453, 454, 472, 473, 484, 493, 595:return VEHICLE_TYPE_BOAT;
- case 435, 450, 569, 570, 584, 590, 591, 606, 607, 608, 610, 611:return VEHICLE_TYPE_TRAILER;
- case 406, 409, 423, 428, 434, 442, 449, 457, 483, 485, 486, 508, 525, 530, 532, 537 .. 539, 545, 571, 572, 574, 583, 588:return VEHICLE_TYPE_UNIQUE;
- case 441, 464, 465, 501, 564, 594:return VEHICLE_TYPE_RC;
- }return INVALID_VEHICLE_TYPE;
- }
- #endif
- stock ResetPlayer(playerid)
- {
- new i;
- I[playerid][pAFK] = false;
- I[playerid][pPaused] = false;
- I[playerid][pInWater] = false;
- #if defined USE_OPSP
- I[playerid][pShoting] = false;
- #endif
- I[playerid][pParachuting] = false;
- I[playerid][pMachine] = false;
- I[playerid][pDriveBy] = S[sDriveby];
- I[playerid][pIntDamage] = S[sIntDamage];
- I[playerid][pReconnect] = false;
- I[playerid][pUseMachine] = S[sVending];
- I[playerid][pPlayingAnim] = false;
- I[playerid][pCaps] = S[sCaps];
- I[playerid][pVend] = false;
- I[playerid][pUpdatedHealth] = false;
- I[playerid][pTReleased] = 0;
- for(; i<4; i++)I[playerid][pP][i] = 0.0;
- I[playerid][pTimer] = -1;
- I[playerid][pTime][0] = GetTickCount();
- I[playerid][pTime][1] = 0;
- I[playerid][pWeap] = 0;
- I[playerid][pVWorld] = 0;
- I[playerid][pHealth] = 0.0;
- I[playerid][pArmour] = 0.0;
- I[playerid][pMoney] = 0;
- I[playerid][pScore] = 0;
- for(i=0; i<13; i++){
- I[playerid][pWeaps][i] = 0;
- I[playerid][pAmmo][i] = 0;
- }
- I[playerid][pFPS] = 0;
- I[playerid][pDrk] = 0;
- }
- #if defined USE_OPSP
- stock AdjustVector(& Float: vX, & Float: vY, & Float: vZ, Float: oX, Float: oY, const Float: oZ)
- {
- static Float: Angle;
- Angle = -atan2(vX, vY);
- if(45.0 < Angle){
- oX ^= oY;
- oY ^= oX;
- oX ^= oY;
- if(90.0 < Angle){
- oX *= -1;
- if(135.0 < Angle){
- oX *= -1;
- oX ^= oY;
- oY ^= oX;
- oX ^= oY;
- oX *= -1;
- }
- }
- }else if(Angle < 0.0){
- oY *= -1;
- if(Angle < -45.0){
- oX *= -1;
- oX ^= oY;
- oY ^= oX;
- oX ^= oY;
- oX *= -1;
- if(Angle < -90.0){
- oX *= -1;
- if(Angle < -135.0){
- oX ^= oY;
- oY ^= oX;
- oX ^= oY;
- }
- }
- }
- }
- vX += oX,
- vY += oY;
- vZ += oZ;
- return false;
- }
- stock GetPlayerCameraWeaponVector(playerid, & Float: vX, & Float: vY, & Float: vZ)
- {
- static weapon;
- if(21 < (weapon = GetPlayerWeapon(playerid)) < 39){
- GetPlayerCameraFrontVector(playerid, vX, vY, vZ);
- switch(weapon){
- case WEAPON_RIFLE: AdjustVector(vX, vY, vZ, 0.016204, 0.009899, 0.047177);
- case WEAPON_AK47, WEAPON_M4: AdjustVector(vX, vY, vZ, 0.026461, 0.013070, 0.069079);
- default: AdjustVector(vX, vY, vZ, 0.043949, 0.015922, 0.103412);
- }
- return 1;
- }
- else GetPlayerCameraFrontVector(playerid, vX, vY, vZ);
- return 0;
- }
- stock crossp(Float:v1x, Float:v1y, Float:v1z, Float:v2x, Float:v2y, Float:v2z, &Float:output)
- {
- new Float:c1 = (v1y * v2z) - (v1z * v2y),
- Float:c2 = (v1z * v2x) - (v1x * v2z),
- Float:c3 = (v1x * v2y) - (v1y * v2x);
- output = floatsqroot ((c1 * c1) + (c2 * c2) + (c3 * c3));
- return 0;
- }
- GetDistanceFromPointToLine(&Float:distance, Float:line_vector_x, Float:line_vector_y, Float:line_vector_z, Float:line_x, Float:line_y, Float:line_z, Float:point_x, Float:point_y, Float:point_z)
- {
- static Float:output;
- crossp(line_vector_x, line_vector_y, line_vector_z, point_x - line_x, point_y - line_y, point_z - line_z, output);//Cross product of 2 vectors.
- distance = output / floatsqroot ((line_vector_x * line_vector_x) + (line_vector_y * line_vector_y) + (line_vector_z * line_vector_z));
- return 0;
- }
- #endif
- #if defined USE_VEHICLE_DATA
- stock encode_tires(tire1, tire2, tire3, tire4) return tire1 | (tire2 << 1) | (tire3 << 2) | (tire4 << 3);
- #endif
- stock pName(playerid)
- {
- static n[MAX_PLAYER_NAME];
- GetPlayerName(playerid, n, MAX_PLAYER_NAME);
- return n;
- }
- #define SetPlayerHealth _SetPlayerHealth
- #define SetPlayerArmour _SetPlayerArmour
- #define SetPlayerMoney _SetPlayerMoney
- #define GivePlayerMoney _GivePlayerMoney
- #define SetPlayerScore _SetPlayerScore
- #define SetPlayerName _SetPlayerName
- #if defined USE_VEHICLE_DATA
- #define AddStaticVehicle _AddStaticVehicle
- #define AddStaticVehicleEx _AddStaticVehicleEx
- #define CreateVehicle _CreateVehicle
- #define SetVehicleNumberPlate _SetVehicleNumberPlate
- #define DestroyVehicle _DestroyVehicle
- #define ChangeVehicleColor _ChangeVehicleColor
- #define LinkVehicleToInterior _LinkVehicleToInterior
- #endif
Advertisement
Add Comment
Please, Sign In to add comment