←  Poradniki oraz Łatki

AMXX.pl: Support AMX Mod X i SourceMod

»

Tutorial
Blokada klasy na danej mapie

  • +
  • -
Stachuu :D ?? - zdjęcie Stachuu :D ?? 17.07.2011

Witam .
Przedstawię wam jak zablokować dowolna klasę na mapie bez ingerenci w cvar "diablo_classes"

Na początek umieść w swoim kodzie .sma ( dowolne miejsce)


stock bool:jakamapa(prze[])
{
new mapname[33]
get_mapname ( mapname,32 )

if(!equal(prze,mapname,3)){
return true;
}
return false;
}

Teraz w Publicu od wyboru klasy jak mamy

case 6:
{
player_class[id] = Ninja
LoadXP(id, player_class[id])
}
Zamieniamy na

case 6:
{
if(jakamapa("cs_")){ ////// zamiast "cs_" dajemy przedrostki map na ktorych ma nie dzialac klasa
player_class[id] = Ninja
LoadXP(id, player_class[id])
}
else ColorChat(id, GREEN, "Blokada klasy na tej^x03 mapie ^x01")
}

Jeśli chcemy zablokować dana klasę
wystarczy zamienić

if(jakamapa("cs_")){

na
if(jakamapa("cs_") && jakamapa("fy_")){   //// klasa będzie niedostępna na mapach typu "cs_" "fy_"

Użytkownik Stachu123 edytował ten post 19.07.2011 11:10
Odpowiedz

  • +
  • -
Death_Player - zdjęcie Death_Player 19.07.2011

Działa wam sposób na kilka przedrostków map ?
Odpowiedz

  • +
  • -
Siemir - zdjęcie Siemir 19.07.2011

Zapewne nikomu ten kod nie działa, bo powinno być
if(jakamapa("cs_") && jakamapa("fy_"))
zamiast
if(jakamapa("cs_")||jakamapa("fy_"))
Odpowiedz

  • +
  • -
Stachuu :D ?? - zdjęcie Stachuu :D ?? 19.07.2011

@up podklejone
Odpowiedz

  • +
  • -
Death_Player - zdjęcie Death_Player 19.07.2011

Siemir możesz wyjaśnić nowicjuszowi w programowaniu dlaczego && a nie || ? Przecież && działa jako i, a || albo.
Odpowiedz

  • +
  • -
Stachuu :D ?? - zdjęcie Stachuu :D ?? 19.07.2011

moze jesli zwraca w 1 true a w 2 false to jako false all ?

i dlatego wykonuje akcje kto wie ^^
Odpowiedz

  • +
  • -
Siemir - zdjęcie Siemir 19.07.2011

Bo właśnie "||" to jest albo czyli wystarczy jeden spełniony warunek. A podana funkcja zwraca false gdy przedrostek jest taki sam jak mapy, co dla więcej niż jednego przedrostka zawsze da jakieś true i właśnie dla tego trzeba sprawdzić wszystkie warunki a nie tylko jeden.
Odpowiedz

  • +
  • -
Death_Player - zdjęcie Death_Player 20.07.2011

Dzięki :)
Odpowiedz

  • +
  • -
Divic - zdjęcie Divic 12.02.2012

no tak fajne a jak bym chcial zatrzymac klase na konkretnej mapie np de_dust2long ?
Odpowiedz

  • +
  • -
Nakupenda. - zdjęcie Nakupenda. 12.02.2012

to zmieniasz
if(!equal(prze,mapname,3))

na
if(!equal(prze,mapname,12)) // tyle znakow ile ma nazwa mapy


oraz wszedzie podmieniasz na to:
jakamapa("de_dust2long")


BTW: ten sposob w moim poscie dziala tylko dla jednej mapy
Odpowiedz

  • +
  • -
Divic - zdjęcie Divic 13.02.2012

czyli nie da sie mamy zabroniona ninje na mapach awp aim fy i dodatkowo mapie dd2long?
Odpowiedz

  • +
  • -
Stachuu :D ?? - zdjęcie Stachuu :D ?? 13.02.2012

mala edycja stocka

stock bool:jakamapa(prze[],ileznakow)
{
new mapname[33]
get_mapname ( mapname,32 )  

if(!equal(prze,mapname,ileznakow)){
return true;    
}
return false;
}
uzycie
if(jakamapa("cs_",3) && jakamapa("fy_",3) && jakamapa("de_dust2long",12){   //// klasa będzie niedostępna na mapach typu "cs_" "fy_"
"de_dust2long" // 12 to liczba znakow w nazwie mapy.

etc. wiem ze mozna byloby uzyc do czytania liczby znakow popzez size prze[], lecz nie mam teraz czasu zbytnio.
Odpowiedz