Peršokti į turinį
  • ŽAIDIMAI
  • , ŽAIDIMAI
  • ŽAIDIMAI

Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 4301 dienas (-ų). Patariame sukurti naują temą, o ne rašyti naują pranešimą.

Už neaktyvių temų prikėlimą galite sulaukti įspėjimo ir pranešimo pašalinimo!

Recommended Posts

(redaguota)

Sveiki taigi atsirado naujas užlaužimo serverio būdas bei žaidėjų account gadinimas. Visa tai nutiko mano serveryje.

Pasekmės:

1. daugumos žaidėjų xp ~ -1000000 ar daugiau.

2. ~1000000 ar daugiau ieškomumo lygio.

3. Neatlaikius serveriui siunčiamų ataku serveris restartuojasi.

Taigi papasakosiu kaip viskas buvo mano serveryje.

Prisijungia Tomas_Tomyte ir staiga sugalvoja pakenkti mums.

Darydamas tai

[18:09:11] [kill] Raimis_Moto killed Tomas_Tomyte

[18:09:11] [kill] Raimis_Moto killed Tomas_Tomyte Brass Knuckles

[18:09:11] [kill] Raimis_Moto killed Tomas_Tomyte Golf Club

[18:09:11] [kill] Raimis_Moto killed Tomas_Tomyte Nite Stick

[18:09:11] [kill] Raimis_Moto killed Tomas_Tomyte Knife

[18:09:11] [kill] Raimis_Moto killed Tomas_Tomyte Baseball Bat

[18:09:11] [kill] Raimis_Moto killed Tomas_Tomyte Shovel

[18:09:11] [kill] Raimis_Moto killed Tomas_Tomyte Pool Cue

[18:09:11] [kill] Raimis_Moto killed Tomas_Tomyte Katana

[18:09:11] [kill] Raimis_Moto killed Tomas_Tomyte Chainsaw

[18:09:11] [kill] Raimis_Moto killed Tomas_Tomyte Dildo

[18:09:11] [kill] Raimis_Moto killed Tomas_Tomyte Dildo

[18:09:11] [kill] Raimis_Moto killed Tomas_Tomyte Vibrator

[18:09:11] [kill] Raimis_Moto killed Tomas_Tomyte Vibrator

[18:09:11] [kill] Raimis_Moto killed Tomas_Tomyte Flowers

[18:09:11] [kill] Raimis_Moto killed Tomas_Tomyte Cane

[18:09:11] [kill] Raimis_Moto killed Tomas_Tomyte Grenade

[18:09:11] [kill] Raimis_Moto killed Tomas_Tomyte Teargas

[18:09:11] [kill] Raimis_Moto killed Tomas_Tomyte

[18:09:11] [kill] Raimis_Moto killed Tomas_Tomyte

[18:09:11] [kill] Raimis_Moto killed Tomas_Tomyte

[18:09:11] [kill] Raimis_Moto killed Tomas_Tomyte

Dabar pažiūrėkite išsamiau.. I viena sekunde jis nusižudo naudojant jūsų nick ir dar kitų žaidėjų nick čia tik maža dalelė, šių atakų mano serveryje buvo 1201326 nuo ( [18:06:14] iki [18:11:25] ) tai reiškia, kad į mažą laiko tarpa severis gauna labai daug atakų per viena ataka Tomas_Tomyte nusižudo , o žudikas lieka kitas atsistiktinis žaidėjas. Nusižudžius Tomas_Tomyte jums užregistruoja nužudymą. Gaunate + 1 žvaigždutę ir -20 xp nuo vienos mirties ( žvaigždučių davimas ir -xp pagal jūsų serverio nuostatas) . Taigi po tokių atakų žaidėjams pasidaro -xp ir didelis ieškomumo lygis.

Mano serveris atlaikė 1,2 mln atakų, bet pasiekė savo ribą ir restartavosi išsaugodamas žaidėjų -xp ir ieškomumo lygį.

šią problema aš isprendžiau sukurdamas apsaugą. Apsauga kickins ir neleis kenkėjui gadinti jūsų žaidimą.

PAPRASTA, BET VEIKSMINGA APSAUGA JUMS:

game mode viršuje įterpiame:

new NUZUDYMAI[MAX_PLAYERS],MIRTYS[MAX_PLAYERS];

po callback onplayerdeath dedame šį kodą:

paciame callback virsuje iterpkite:

if (IsPlayerNPC (killerid)) return 1; // si funkcija negalios npc botams, nes tomas_Tomyte žudėsi naudodamasis ir npc botais, pvz nusizudzius tomas_Tommy naudojant npc boto nick kickins tomas_Tommy o npc botą paliks žaidime.

// APSAUGA NUO NULUZIMO

// ÞUDIKO

NUZUDYMAI[killerid]++;

SetTimerEx("NulinamZudymus", 1000*10, false, "i", killerid); // sec

if(NUZUDYMAI[killerid] == 3)

{

if(GetPVarInt(playerid,"Admin") > 0) return 1;

if(GetPVarInt(playerid,"Darbas") == POLICIJA && GetPVarInt(playerid,"Darbas") == KAREIVIAI) return 1;

new msg[128],name[MAX_PLAYER_NAME];

GetPlayerName(killerid,name,sizeof(name));

format(msg,sizeof(msg),"[racija] Operatore Marytë: Gavom skundà jog,%s þudo þmones,patikrinkit já,ir suimkit!.",name);

SendClientMessage(killerid,BLUE,"* Kiek galite þudyti?! Policija jau pakeliui pas jus!.");

SendMessageToPolicijai(msg);

ResetPlayerWeapons(killerid);

}

if(NUZUDYMAI[killerid] == 5)

{

KickWithMessage(killerid, "MASINIS ÞUDYMAS PER 10 SEC.");

}

// jeigu žaidėjas miršta nepraėjus 10 sec 6 kartus šis veiksmas apsaugos nuo tokiu kaip Tomas_Tomyte savizudziu.

MIRTYS[playerid]++;

SetTimerEx("NulinamMirtis", 1000*10, false, "i", playerid); // sec

if(MIRTYS[playerid] == 6)

{

KickWithMessage(playerid, "MASINËS MIRTYS PER 10 SEC.");

}

kur nors game mode apačioje ar viršuje įdedame:

forward NulinamMirtis(playerid);

public NulinamMirtis(playerid)

{

MIRTYS[playerid] = 0;

return 1;

}

forward NulinamZudymus(playerid);

public NulinamZudymus(playerid)

{

NUZUDYMAI[playerid] = 0;

return 1;

}

susirandame public Clear(playerid) arba stock Clear(playerid) nezinau kaip pas jus užvadinta ir įterpiame:

NUZUDYMAI[playerid] = 0;

MIRTYS[playerid] = 0;

Sistema gan paprasta ir sugaišau gal 5 minutes. Jei kyla klausimų komentuokite :)

Redaguota , nario Versace
  • Teigiamai 3

Saunuolis Bet As Kai Naudojau Sobeit Serverio Kurimui Perziurejes Funkcijas Rades Buvau Ta Fake Kill Ir Kai Paspaudziau Ant Jo Rode Pasirinkt Zaideja Saves Nejo Ejo Netgi NPC As Pasirinkau Npc Ir Rodo Kad Rovele_Cave Mire Nuo NPC Nu Zinoma Ten Buvo NPC Boto Vardas.Kita Karta Bandziau Ant Player alNu Draugo Ir Ka?Gavosi Tas Pats Kas Tau Tik Ten Ne Tiek Mirciu O Kiek Paspaudineji Tai Va Patarciau Isideti Anti Sobeita Jei Netikit Kad Ir Sobeite Tuomet Ar Youtube Irasykit Sobeit Fake Kill Ar Parsisiuskit Sobeita Ir Panarsykit Po Funkfijas

(redaguota)

NENAUDOKIT! PER DAUG KODO!

Viskas ko reikia, tai tiesiog po OnPlayerDeath parašyti:

new Float:x,Float:y,Float:z;
GetPlayerPos(playerid, x, y, z);
if(IsPlayerInRangeOfPoint(killerid, 50, x, y, z))
{
Kick(playerid);
return 1;
}

Kodą galite pasikeisti, bet šitas būtų trumpiausias ir mažiausiai imantis resursus. Tiesiog patikrinam ar žaidėjas yra arti kito žaidėjo kai jis miršta ir vsio. Neįmanoma nužudyti net su sniperiu per 50 metrų. Aišku, temos autoriaus kodas yra daug tikslesnis, nes pvz mano kodas jei fake kill vyks arčiau nei 50 metrų, tada neveiks. Bet galima kodą pasikoreguoti duodant atstumą su tam tikru ginklu(Pvz 0 ginklas butu 5 metrai, nes su kumščiais iš 5 metrų neužmuši)

Redaguota , nario !LukniS!
  • Teigiamai 1
  • Neigiamai 1

Aš turiu kitokį variantą:

new 
     Damage[MAX_PLAYERS],
     FakeKill[MAX_PLAYERS]
;

public OnPlayerConnect(playerid)
{
Damage[playerid] = INVALID_PLAYER_ID;
FakeKill[playerid] = 0;
return 1;
}

public OnPlayerGiveDamage(playerid, damagedid, Float:amount, weaponid)
{
Damage[damagedid] = playerid;
return 1;
}

public OnPlayerDeath(playerid, killerid, reason)
{
if(killerid != INVALID_PLAYER_ID)
{
if(Damage[playerid] != killerid)
{
FakeKill[playerid] ++;
Damage[playerid] = INVALID_PLAYER_ID;
if(FakeKill[playerid] > 2)
{
Kick(playerid);
}
return 1;
}
}
return 1;
}

Aišku turėtumėt pasitvarkyt savo /kill komandą, jei tokia yra.

  • Parašė po 2 mėnesių...

NENAUDOKIT! PER DAUG KODO!

Viskas ko reikia, tai tiesiog po OnPlayerDeath parašyti:

new Float:x,Float:y,Float:z;
GetPlayerPos(playerid, x, y, z);
if(IsPlayerInRangeOfPoint(killerid, 50, x, y, z))
{
Kick(playerid);
return 1;
}

Kodą galite pasikeisti, bet šitas būtų trumpiausias ir mažiausiai imantis resursus. Tiesiog patikrinam ar žaidėjas yra arti kito žaidėjo kai jis miršta ir vsio. Neįmanoma nužudyti net su sniperiu per 50 metrų. Aišku, temos autoriaus kodas yra daug tikslesnis, nes pvz mano kodas jei fake kill vyks arčiau nei 50 metrų, tada neveiks. Bet galima kodą pasikoreguoti duodant atstumą su tam tikru ginklu(Pvz 0 ginklas butu 5 metrai, nes su kumščiais iš 5 metrų neužmuši)

Šitas tavo kodas tai... Jei pvz Kažkas nušauna žmogų ,nesvarbu nuo kokio atstumo , tą kuris nušautas iškickina

Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 4301 dienas (-ų). Patariame sukurti naują temą, o ne rašyti naują pranešimą.

Už neaktyvių temų prikėlimą galite sulaukti įspėjimo ir pranešimo pašalinimo!

Svečias
Ši tema yra užrakinta.
  • Šiame puslapyje naršo:   0 nariai

    • Nėra registruotų narių peržiūrinčių šį forumą.

Skelbimai



×
×
  • Sukurti naują...