Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <a_samp>
- #define YSI_YES_HEAP_MALLOC
- #include <YSI_Coding\y_timers>
- #include <YSI_Coding\y_hooks>
- #include <YSI_Coding\y_iterate>
- #define MSG SendClientMessage
- #define DYNAMIC_MEMORY_IS_DYN 32
- #define MSGE SendClientMessageToAll
- #if !defined MAX_PLAYER_NAME
- #define MAX_PLAYER_NAME 24
- #endif
- #if !defined MAX_PLAYERS
- #define MAX_PLAYERS 1000
- #endif
- hook OnGameModeInit()
- {
- printf("PJER-AC LOADED.");
- LocUpdate();
- return 1;
- }
- hook OnGameModeExit()
- {
- printf("PJER-AC UNLOADED.");
- return 1;
- }
- forward [MAX_PLAYER_NAME+1]imeigraca(playerid);
- stock imeigraca(playerid)
- {
- #assert MAX_PLAYER_NAME + 1 == 25
- #emit PUSH.C 25
- #emit PUSH.S 16
- #emit PUSH.S playerid
- #emit PUSH.C 12
- #emit SYSREQ.C GetPlayerName
- #emit STACK 16
- #emit RETN
- }
- stock Float:udaljenost(Float:x1,Float:y1,Float:z1, Float:x2,Float:y2,Float:z2)
- {
- return floatsqroot(floatpower(floatabs(floatsub(x2,x1)),2)+floatpower(floatabs(floatsub(y2,y1)),2)+floatpower(floatabs(floatsub(z2,z1)),2));
- }
- new Float:_LOKACIJA__x[MAX_PLAYERS];
- new Float:_LOKACIJA__y[MAX_PLAYERS];
- new Float:_LOKACIJA__z[MAX_PLAYERS];
- new igracstvoren[MAX_PLAYERS];
- new igrac_desync[MAX_PLAYERS];
- stock pac_SetPlayerPos(playerid, Float:x, Float:y, Float:z)
- {
- _LOKACIJA__x[playerid] = x;
- _LOKACIJA__y[playerid] = y;
- _LOKACIJA__z[playerid] = z;
- return SetPlayerPos(playerid, x, y, z);
- }
- #if defined _ALS_SetPlayerPos
- #undef SetPlayerPos
- #else
- #define _ALS_SetPlayerPos
- #endif
- #define SetPlayerPos pac_SetPlayerPos
- task LocUpdate[270](){
- foreach(new i : Player)
- GetPlayerPos(i, _LOKACIJA__x[i], _LOKACIJA__y[i], _LOKACIJA__z[i]);
- }
- hook OnPlayerConnect(playerid)
- {
- igrac_desync[playerid] = 0;
- igracstvoren[playerid] = 0;
- return 1;
- }
- forward OnPlayerTeleport(playerid, Float:daljina);
- public OnPlayerTeleport(playerid, Float:daljina)
- {
- new string[DYNAMIC_MEMORY_IS_DYN+0];// dynamic safe string
- MSG(playerid,-1,"Vi ste kikovani zbog citovanja #00.");
- format(string,DYNAMIC_MEMORY_IS_DYN,"%s je kikovan (#00).", imeigraca(playerid));
- MSGE(-1, string);
- printf(string);
- igrac_desync[playerid] = 1;
- SetTimerEx("Handle_Kick", 1000, false, "i", playerid);
- return 1;
- }
- forward Handle_Kick(playerid);
- public Handle_Kick(playerid){
- igracstvoren[playerid] = 0;
- Kick(playerid);
- return 1;
- }
- hook OnPlayerSpawn(playerid)
- {
- igracstvoren[playerid] = 1;
- return 1;
- }
- hook OnPlayerDeath(playerid, killerid, reason)
- {
- igracstvoren[playerid] = 0;
- return 1;
- }
- hook OnPlayerUpdate(playerid)
- {
- new Float:dist = 0.0;
- new Float:xplayer[3];
- foreach(new i : Player){
- if(igrac_desync[i] == 1) continue;
- GetPlayerPos(i,xplayer[0],xplayer[1],xplayer[2]);
- if(igracstvoren[i]==0) continue;
- if(udaljenost(xplayer[0],xplayer[1],xplayer[2],_LOKACIJA__x[i],_LOKACIJA__y[i],_LOKACIJA__z[i]) > 25.0)
- OnPlayerTeleport(i,dist);
- }
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement