Szerző Téma: Anticheat  (Megtekintve 1070 alkalommal)

Anticheat
« Dátum: 2015. augusztus 15. - 17:28:06 »
0 Show voters
Szóval írnám a kis lőszer ácémet, erre errorozás nincs, de amikor lövök mindig kickel
 

new dezitolteny[MAX_PLAYERS];
new dezitoltenyy[MAX_PLAYERS];
public OnPlayerSpawn(playerid)
{
new rand = random(sizeof(RandomSpawns));
SetPlayerPos(playerid,RandomSpawns[rand][0],RandomSpawns[rand][1],RandomSpawns[rand][2]);
SetPlayerInterior(playerid,2);
GivePlayerWeapon(playerid,4,1);
new users[64];
    new nev[MAX_PLAYER_NAME];
    GetPlayerName(playerid,nev,sizeof(nev));
    format(users,sizeof(users),\"/users/%s.txt\",nev);
dezitolteny[playerid]=200;
GivePlayerWeapon(playerid,24,200);
return 1;
}
forward OnPlayerWeaponShot(playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ);
public OnPlayerWeaponShot(playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ)
{
    if (weaponid==24)
    {
       dezitoltenyy[playerid]=dezitolteny[playerid]-1;
        SetTimerEx(\"Anticheatdezi\", 500, false, \"i\", playerid);
    }
    return 1;
}
forward Anticheatdezi(playerid);
public Anticheatdezi(playerid)
{
if (strval(dezitoltenyy[playerid]) != GetPlayerAmmo(playerid))
{
        Kick(playerid);
    }
return 1;
}
« Utoljára szerkesztve: 2015. augusztus 15. - 17:36:42 írta JacksonDavis »

Anticheat
« Válasz #1 Dátum: 2015. augusztus 15. - 19:49:18 »
0 Show voters
A feltételnél felesleges az strval mert az Stringből csinál Int-et

Anticheat
« Válasz #2 Dátum: 2015. augusztus 15. - 20:34:01 »
0 Show voters
De ha nem csinálom intté akkor 200-1 lesz, nem pedig 199.

Nem elérhető ROOCK

  • 183
    • Profil megtekintése
Anticheat
« Válasz #3 Dátum: 2015. augusztus 19. - 15:33:07 »
0 Show voters
Probáld ki azt hogy előszőr levonod az egyet és utánna teszed változoba tehát a
 
dezitolteny [playerid]-1;
dezitoltenyy[playerid]=dezitolteny[playerid];

 
Mondjuk nemvágom h minek van külön változoba szerintem felesleges
Meg szedd ki az strval a ac ból az nem kell oda :)
teszteltem tökéletesen működik :D
meg irtam egy kis üzenetet hogy tudja a player mért kickelték ki :D
 

new dezitolteny[MAX_PLAYERS];
public OnPlayerSpawn(playerid)
{
        new rand = random(sizeof(RandomSpawns));
        SetPlayerPos(playerid,RandomSpawns[rand][0],RandomSpawns[rand][1],RandomSpawns[rand][2]);
        SetPlayerInterior(playerid,2);
        GivePlayerWeapon(playerid,4,1);
        new users[64];
       new nev[MAX_PLAYER_NAME];
       GetPlayerName(playerid,nev,sizeof(nev));
       format(users,sizeof(users),\"/users/%s.txt\",nev);
        dezitolteny[playerid]=200;
        GivePlayerWeapon(playerid,24,200);
        return 1;
}
forward OnPlayerWeaponShot(playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ);
public OnPlayerWeaponShot(playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ)
{
    if (weaponid==24)
    {
        dezitolteny[playerid]--;
        SetTimerEx(\"Anticheatdezi\", 500, false, \"i\", playerid);
    }
    return 1;
}
forward Anticheatdezi(playerid);
public Anticheatdezi(playerid)
{
        if(dezitolteny[playerid] != GetPlayerAmmo(playerid))
        {
                SendClientMessageToAll(0xFFFF00FF, \"AntiCheat: Több töltényed volt a megengedettnél!!\");
                Kick(playerid);
       }
        return 1;
}
« Utoljára szerkesztve: 2015. augusztus 19. - 16:27:07 írta ROOCK »

Anticheat
« Válasz #4 Dátum: 2015. augusztus 19. - 17:29:54 »
0 Show voters
Köszi, bár már mindegy, mivel másik modba kezdtünk azóta, teljesen más alapokkal.

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal