18.09.2014, 08:02
For some reason the players / vehicles desync then reappear after a few seconds. - Any help? Also let me know what you need me to show!
public OnPlayerUpdate(playerid) { static str[64], id = -1, keys[3], vehicleid; if (PlayerData[playerid][pKicked]) return 0; if (GetPlayerWeapon(playerid) > 1 && (PlayerData[playerid][pHoldWeapon] > 0 || PlayerData[playerid][pMining] > 0)) SetPlayerArmedWeapon(playerid, 0); if (IsPlayerInAnyVehicle(playerid)) vehicleid = GetPlayerVehicleID(playerid); else vehicleid = INVALID_VEHICLE_ID; GetPlayerKeys(playerid, keys[0], keys[1], keys[2]); if (GetPlayerWeapon(playerid) != PlayerData[playerid][pWeapon]) { PlayerData[playerid][pWeapon] = GetPlayerWeapon(playerid); if (PlayerData[playerid][pWeapon] >= 1 && PlayerData[playerid][pWeapon] <= 45 && PlayerData[playerid][pWeapon] != 40 && PlayerData[playerid][pWeapon] != 2 && PlayerData[playerid][pGuns][g_aWeaponSlots[PlayerData[playerid][pWeapon]]] != GetPlayerWeapon(playerid) && !PlayerHasTazer(playerid) && !PlayerHasBeanBag(playerid) && PlayerData[playerid][pRangeBooth] == -1 && PlayerData[playerid][pCharacter] > 0) { SendAdminAlert(COLOR_LIGHTRED, "[ADMIN]: %s has been banned for weapon hacks (%s).", ReturnName(playerid, 0), ReturnWeaponName(PlayerData[playerid][pWeapon])); Log_Write("logs/cheat_log.txt", "[%s] %s was banned for weapon hacks (%s).", ReturnDate(), ReturnName(playerid), ReturnWeaponName(PlayerData[playerid][pWeapon])); Blacklist_Add(PlayerData[playerid][pIP], PlayerData[playerid][pUsername], "Anticheat", "Weapon Hacks"); Kick(playerid); return 0; } } if (GetPlayerMoney(playerid) != PlayerData[playerid][pMoney]) { ResetPlayerMoney(playerid); GivePlayerMoney(playerid, PlayerData[playerid][pMoney]); } if (GetPlayerScore(playerid) != PlayerData[playerid][pPlayingHours]) { SetPlayerScore(playerid, PlayerData[playerid][pPlayingHours]); } if (PlayerData[playerid][pWaypoint]) { format(str, sizeof(str), "~b~Waypoint:~w~ %s (%.2f meters)", PlayerData[playerid][pLocation], GetPlayerDistanceFromPoint(playerid, PlayerData[playerid][pWaypointPos][0], PlayerData[playerid][pWaypointPos][1], PlayerData[playerid][pWaypointPos][2])); PlayerTextDrawSetString(playerid, PlayerData[playerid][pTextdraws][69], str); } if (PlayerData[playerid][pMaskOn]) { if (!PlayerData[playerid][pHideTags]) { foreach (new i : Player) { ShowPlayerNameTagForPlayer(i, playerid, 0); } format(str, sizeof(str), "Mask_#%d", PlayerData[playerid][pMaskID]); PlayerData[playerid][pHideTags] = 1; PlayerData[playerid][pNameTag] = CreateDynamic3DTextLabel(str, COLOR_WHITE, 0.0, 0.0, 0.2, 8.0, playerid, INVALID_VEHICLE_ID, 0, -1, -1); } } if (!PlayerData[playerid][pMaskOn] && PlayerData[playerid][pHideTags]) { foreach (new i : Player) { ShowPlayerNameTagForPlayer(i, playerid, 1); } ResetNameTag(playerid); } if (IsPlayerInAnyVehicle(playerid) && GetPlayerState(playerid) == PLAYER_STATE_DRIVER) { if (IsSpeedoVehicle(vehicleid) && !PlayerData[playerid][pDisableSpeedo]) { static Float:fDamage, Float:fSpeed, Float:fVelocity[3]; GetVehicleHealth(vehicleid, fDamage); GetVehicleVelocity(vehicleid, fVelocity[0], fVelocity[1], fVelocity[2]); fDamage = floatdiv(1000 - fDamage, 10) * 1.42999; // 1.33334; fSpeed = floatmul(floatsqroot((fVelocity[0] * fVelocity[0]) + (fVelocity[1] * fVelocity[1]) + (fVelocity[2] * fVelocity[2])), 100.0); if (fDamage < 0.0) fDamage = 0.0; else if (fDamage > 100.0) fDamage = 100.0; format(str, sizeof(str), "~r~Fuel:~w~ %d%c", CoreVehicles[vehicleid][vehFuel], '%'); PlayerTextDrawSetString(playerid, PlayerData[playerid][pTextdraws][35], str); format(str, sizeof(str), "~r~Speed:~w~ %.0f mph", fSpeed); PlayerTextDrawSetString(playerid, PlayerData[playerid][pTextdraws][36], str); format(str, sizeof(str), "~r~Damage:~w~ %.0f/100%%", (fDamage > 100.0) ? (100.0) : (fDamage)); PlayerTextDrawSetString(playerid, PlayerData[playerid][pTextdraws][37], str); format(str, sizeof(str), "~r~Windows:~w~ %s", (CoreVehicles[vehicleid][vehWindowsDown]) ? ("Down") : ("Up")); PlayerTextDrawSetString(playerid, PlayerData[playerid][pTextdraws][38], str); } for (new i = 0; i != MAX_BARRICADES; i ++) if (BarricadeData[i][cadeExists] && BarricadeData[i][cadeType] == 1 && IsPlayerInRangeOfPoint(playerid, 3.0, BarricadeData[i][cadePos][0], BarricadeData[i][cadePos][1], BarricadeData[i][cadePos][2])) { static tires[4]; GetVehicleDamageStatus(vehicleid, tires[0], tires[1], tires[2], tires[3]); if (tires[3] != 1111) { UpdateVehicleDamageStatus(vehicleid, tires[0], tires[1], tires[2], 1111); } break; } } switch (PlayerData[playerid][pHouseLights]) { case 0: { if ((id = House_Inside(playerid)) != -1 && !HouseData[id][houseLights]) { PlayerData[playerid][pHouseLights] = true; PlayerTextDrawShow(playerid, PlayerData[playerid][pTextdraws][62]); } else PlayerTextDrawHide(playerid, PlayerData[playerid][pTextdraws][62]); } case 1: { if ((id = House_Inside(playerid)) == -1 || (id != -1 && HouseData[id][houseLights])) { PlayerData[playerid][pHouseLights] = false; PlayerTextDrawHide(playerid, PlayerData[playerid][pTextdraws][62]); } } } if (PlayerData[playerid][pDrinking] && GetPlayerSpecialAction(playerid) != SPECIAL_ACTION_DRINK_SPRUNK && !IsPlayerInAnyVehicle(playerid)) { DestroyProgressBar(PlayerData[playerid][pDrinkBar]); PlayerData[playerid][pDrinking] = 0; } if ((id = Speed_Nearest(playerid)) != -1 && GetPlayerSpeed(playerid) > SpeedData[id][speedLimit] && GetPlayerState(playerid) == PLAYER_STATE_DRIVER && IsEngineVehicle(vehicleid) && !PlayerData[playerid][pSpeedTime]) { if (!IsACruiser(vehicleid) && !IsABoat(vehicleid) && !IsAPlane(vehicleid) && !IsAHelicopter(vehicleid)) { new price = 100 + floatround(GetPlayerSpeed(playerid) - SpeedData[id][speedLimit]); format(str, sizeof(str), "Speeding (%.0f/%.0f mph)", GetPlayerSpeed(playerid), SpeedData[id][speedLimit]); SetTimerEx("HidePlayerBox", 500, false, "dd", playerid, _:ShowPlayerBox(playerid, 0xFFFFFF66)); if (Ticket_Add(playerid, price, str) != -1) { format(str, sizeof(str), "You have received a ~r~%s~w~ speeding ticket.", FormatNumber(price)); ShowPlayerFooter(playerid, str); } PlayerData[playerid][pSpeedTime] = 5; } } if (Detector_Nearest(playerid) != -1) { if (IsPlayerArmed(playerid) && gettime() > PlayerData[playerid][pDetectorTime]) { PlayerData[playerid][pDetectorTime] = gettime() + 5; SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** The metal detector sounds off. (( %s ))", ReturnName(playerid, 0)); PlayerPlaySoundEx(playerid, 43000); } } if ((keys[0] & KEY_FIRE) && GetPlayerWeapon(playerid) == 42) { static Float:fX, Float:fY, Float:fZ; for (new i = 0; i < sizeof(g_aFireObjects); i ++) { GetDynamicObjectPos(g_aFireObjects[i], fX, fY, fZ); if ((IsValidDynamicObject(g_aFireObjects[i]) && IsPlayerInRangeOfPoint(playerid, 4.0, fX, fY, fZ)) && ++ g_aFireExtinguished[i] == 32) { SetTimerEx("DestroyWater", 2000, false, "d", CreateDynamicObject(18744, fX, fY, fZ - 0.2, 0.0, 0.0, 0.0)); DestroyDynamicObject(g_aFireObjects[i]); g_aFireExtinguished[i] = 0; } } } if ((keys[0] & KEY_FIRE) && (GetVehicleModel(GetPlayerVehicleID(playerid)) == 407 || GetVehicleModel(GetPlayerVehicleID(playerid)) == 544)) { static Float:fX, Float:fY, Float:fZ, Float:fVector[3], Float:fCamera[3]; GetPlayerCameraFrontVector(playerid, fVector[0], fVector[1], fVector[2]); GetPlayerCameraPos(playerid, fCamera[0], fCamera[1], fCamera[2]); for (new i = 0; i < sizeof(g_aFireObjects); i ++) { GetDynamicObjectPos(g_aFireObjects[i], fX, fY, fZ); if (IsValidDynamicObject(g_aFireObjects[i]) && IsPlayerInRangeOfPoint(playerid, 3050, fX, fY, fZ)) { if (++g_aFireExtinguished[i] == 64 && DistanceCameraTargetToLocation(fCamera[0], fCamera[1], fCamera[2], fX, fY, fZ + 2.5, fVector[0], fVector[1], fVector[2]) < 12.0) { SetTimerEx("DestroyWater", 2000, false, "d", CreateDynamicObject(18744, fX, fY, fZ - 0.2, 0.0, 0.0, 0.0)); DestroyDynamicObject(g_aFireObjects[i]); g_aFireExtinguished[i] = 0; } } } } return 1; }
if (PlayerData[playerid][pKicked])//IDK what is it... maybe you aren't resetting this variable
return 0;
if (PlayerData[playerid][pWeapon] >= 1 && PlayerData[playerid][pWeapon] <= 45 && PlayerData[playerid][pWeapon] != 40 && PlayerData[playerid][pWeapon] != 2 && PlayerData[playerid][pGuns][g_aWeaponSlots[PlayerData[playerid][pWeapon]]] != GetPlayerWeapon(playerid) && !PlayerHasTazer(playerid) && !PlayerHasBeanBag(playerid) && PlayerData[playerid][pRangeBooth] == -1 && PlayerData[playerid][pCharacter] > 0)
{
SendAdminAlert(COLOR_LIGHTRED, "[ADMIN]: %s has been banned for weapon hacks (%s).", ReturnName(playerid, 0), ReturnWeaponName(PlayerData[playerid][pWeapon]));
Log_Write("logs/cheat_log.txt", "[%s] %s was banned for weapon hacks (%s).", ReturnDate(), ReturnName(playerid), ReturnWeaponName(PlayerData[playerid][pWeapon]));
Blacklist_Add(PlayerData[playerid][pIP], PlayerData[playerid][pUsername], "Anticheat", "Weapon Hacks");
Kick(playerid);
return 0;//IDK why desync someone who is being kicked
}
if (PlayerData[playerid][pKicked])//IDK what is it... maybe you aren't resetting this variable
return 0;
if (PlayerData[playerid][pWeapon] >= 1 && PlayerData[playerid][pWeapon] <= 45 && PlayerData[playerid][pWeapon] != 40 && PlayerData[playerid][pWeapon] != 2 && PlayerData[playerid][pGuns][g_aWeaponSlots[PlayerData[playerid][pWeapon]]] != GetPlayerWeapon(playerid) && !PlayerHasTazer(playerid) && !PlayerHasBeanBag(playerid) && PlayerData[playerid][pRangeBooth] == -1 && PlayerData[playerid][pCharacter] > 0)
{
SendAdminAlert(COLOR_LIGHTRED, "[ADMIN]: %s has been banned for weapon hacks (%s).", ReturnName(playerid, 0), ReturnWeaponName(PlayerData[playerid][pWeapon]));
Log_Write("logs/cheat_log.txt", "[%s] %s was banned for weapon hacks (%s).", ReturnDate(), ReturnName(playerid), ReturnWeaponName(PlayerData[playerid][pWeapon]));
Blacklist_Add(PlayerData[playerid][pIP], PlayerData[playerid][pUsername], "Anticheat", "Weapon Hacks");
Kick(playerid);
return 0;
}
if (PlayerData[playerid][pWeapon] >= 1 && PlayerData[playerid][pWeapon] <= 45 && PlayerData[playerid][pWeapon] != 40 && PlayerData[playerid][pWeapon] != 2 && PlayerData[playerid][pGuns][g_aWeaponSlots[PlayerData[playerid][pWeapon]]] != GetPlayerWeapon(playerid) && !PlayerHasTazer(playerid) && !PlayerHasBeanBag(playerid) && PlayerData[playerid][pRangeBooth] == -1 && PlayerData[playerid][pCharacter] > 0)
{
SendAdminAlert(COLOR_LIGHTRED, "[ADMIN]: %s has been banned for weapon hacks (%s).", ReturnName(playerid, 0), ReturnWeaponName(PlayerData[playerid][pWeapon]));
Log_Write("logs/cheat_log.txt", "[%s] %s was banned for weapon hacks (%s).", ReturnDate(), ReturnName(playerid), ReturnWeaponName(PlayerData[playerid][pWeapon]));
Blacklist_Add(PlayerData[playerid][pIP], PlayerData[playerid][pUsername], "Anticheat", "Weapon Hacks");
Kick(playerid);
}
if (PlayerData[playerid][pKicked])
return 0;