Szerző Téma: Szerver készítés: alapok | Config, Scripting, Tanácsok  (Megtekintve 21925 alkalommal)

Szerver készítés: alapok | Config, Scripting, Tanácsok
« Dátum: 2010. December 31. - 21:09:47 »
+7
Üdvözletem!
 
Nagyon sok leírás készült már el,nagyon sok jó tanáccsal a kezdõknek/haladóknak,ami nagyon jó dolog.
Mégis rengetegen még az alapokat sem tudják,ennek lehet több oka is.Most megpróbálom ebben a kis leckében leírni azokat a dolgokat,amiket ha elolvasnak a kezdõk,akkor nem nyitnak minden kis semmiségért felesleges témát.Szóval ez egy teljeskörû PAWN nyelv oktató leírás (lesz) illetve SA:MP szerver konfiguráció.
Egy ilyet nagyon nehéz munka megírni egyedül,éppen ezért sokszor fogok belinkelni leírásokat ,(mind a két fórumról,remélem nem jelent gondot) és hasznos linkeket.Folyamatos frissítéssel.
Hasznos linkek:
wiki.sa-mp.com - SA:MP hivatalos wikije,innen meg lehet tanulni scriptelni ha tudsz angolul.
Tartalomjegyzék:

 
Kezdet:Szerver konfiguráció
 
Töltsük le a SA:MP szerver pakkot a hivatalos weboldalról.( www.sa-mp.com )
Remélem ez senkinek nem okoz nehézséget.Ne a klienst,hanem a szervert töltsétek le.
Jelenlegi legfrissebb verzió: 0.3c RC 7
Miután letöltöttük és szépen kicsomagoljuk,rengeteg mappát láthatunk benne.Ezek jó lenne tudni,hogy mik,igaz?
 
  • filterscripts
- Ebben a mappában találhatóak a PAWN scriptek,tartalmaz pár alap scriptet és ide rakhatjuk a késsöbbiekben készített/letöltött scripteket is.
 
  • gamemodes
- Játékmódjaink mappája.Ezek szintén scriptek,PAWN scriptek.Több mód is lehet a mappában de egyszerre csak 1 futhat,viszont könnyû váltani.
 
  • include
- Ebben a mappában van pár fájl amit scriptjeinkbe ágyazhatunk be.Vigyázat!Ezt a mappát így érhetjük el: #incule \"../include/fajlneve\"
 
  • npcmodes
- Ebben a mappában találhatjuk az NPC (Non Player Charter,nem játékos karakter) mini scripteket.
 
  • npcmodes -> recordings
- Általában úgy készítünk NPC-t,hogy felvesszük a mozgását.Ezeket a .rec fájlokat kell ide helyezni.
 
  • pawno
- Ez a fordítóprogramunk mappája.Ha ebbõl több van,könnyen megkavarodhatunk,errorokat kaphatunk scriptjeinkben,ha rossz fordítóprogramot nyitunk meg.Ezért ezt ajánlatos egybõl elhelyezni az egyik merevlemezen és csak 1-et tartani belõle!
 
  • pawno -> include
- Ittis ún. beágyazandó fájlok (fejálományok,függvénykönyvtárak) találhatóak.Ide szoktuk rakni az .inc fájlokat amiket késöbb beágyazhatunk scriptjeinkbe.Simán #include \"fajlneve\" utasítással érhetjük el.
 
  • plugins
- Ide kerülnek a szerver pluglinjai.Ezekre késöbb visszatérünk.
 
  • scriptfiles
- Nos,hogy is mondjam,ebbõl a könyvtárba szoktak írni szkriptjeink/olvasni,pl. egy admin script ide menti általában a felhasználókat,konfigját stb,tehát mondhatjuk ezt egy adatbázis féleségnek.Nem feltétlenül szükséges használni,hiszen már van MySql féle adatbázis plugin,ami sokkal jobb. - Visszatérünk rá.
 

Ezek a könyvtárak találhatóak a szervermappában.Van 3 darab fontos fájl is itt:
 
  • samp-server.exe
- Ez maga a szervered indítófájlja.Ha csak úgy elindítod letöltés után nem fog mûködni.Elöbb konfigurálni kell.
 
  • server.cfg
- Itt konfigurálhatod szerveredet.Késöbb még foglalkozunk vele.
 
  • server_log.txt
- Ez igazából nem létezik,akkor jön létre amikor elõször elindítod a szerveredet.ide lesz bejegyezve minden.(Rcon bejelentkezések,chat,stb...)
 

server.cfg
Ez egy nagyon fontos fájl.Elõször is nyissuk meg valamilyen szövegszerkesztõvel (pl. Notepad) és máris szerkeszthetjük,errõl Epsilon írt egy jó kis leírást:
[Leírás] SA:MP Szerver konfigurácó
Ezeknek az információknak a tudatában már tudjuk konfigurálni a szerverünket.
Miután mindennel megvagyunk,indítsuk el a samp-server.exe fájlt,és már fut is a szerverünk,ha meg akarjuk nézni,nyissuk meg a SA:MP klienst és írd be a kedvencekhez a szervered portját.(Pl. \":7777\",idézõjelek nélkül.)
[TUT]Szerver router mellet
Magic_Man féle leírás,sokaknak hasznos lehet.
Pluginek telepítése
[ Leírás ]Pluginok telepítése
Nagyon szép leírás.
A kliens
[ Leírás ] A SA-MP Program gombjai, menüjei
Ehez nem fûznék semmit sem,ennyit pont elég tudni.
EZ is nagyon hasznos lehet: [Leírás] Ingame parancsok
RCON
Alább találhatók az RCON parancsok.Forrás:Szerverberles.hu
Az RCON az alap admin ami minden szerverhez jár.Kikapcsolhatjuk,ha a server.cfg-ben az rcon értéket 0-ra álítjuk.(Lásd:server.cfg)
Mielõtt használhatjuk a parancsoat,be kell jelentkeznünk az /rcon login jelszó parancsal.
A jelszavat szintén a server.cfg-ben álítjuk be.Alapméretezetten \"changeme\" ,ha ezt nem változtatod meg,a szerver nem indul el.
Az RCON parancsokat megtekintheted itt.
Unkown mod
Ezt Mambo leírta egyszer,és Eps meg dnS is kiegészítették:
 
Hát, ez kicsit sem ritka dolog... A válasz pedig egyszeru rá. Valamilyen plugin hiányzik a plugins mappából, vagy a server.cfg-bol.
dnS\': Még akkora jöhet szóba, ha hiányzik a main függvény.
Epsilon: Még akkor jöhet szóba ha a módban nem lett alkalmazva a SetGameModeText függvény.
 
[/quote]
Epsilon további kiegészítése:
Az Unkown mód nem feltétlen a a plugin hibáját jelzi, hanem egy a pluginhoz tartozó fájl hiányát.
Vagy valami más ok miatt van, ami miatt nem tudott a plugin betöltõdni.
 
Scripteljünk PAWN nyelven!
 
Mindenekelõtt ,Spatrik írt egy szép leírást,ami mindenképpen hasznos:
[Leírás]Gyakori figyelmetlenségek
Eszközeink (Fontos!)
Régen ugye az strtok volt a menõ ha parncsoknak akartunk paramétereket adni,meg senkit nem érdekelt egy 256-os karakterlánc,egy pazarló ciklus stb...Ez volt a szokás,viszont ez már nagyon nem így van,a részleteket le írja Spatrik a fentebb linkelt leírásban,én megemlíteném a mostani szerverek legjobb eszközeit.
Szóval,a ma létezõ legjobb eszközök:
MySql plugin - Ebbõl 3 is van,és G-Stylezzzz pluginját használom személy szerint.
Ezt adatok tárolására használjuk.pl. regisztrált tagok,kocsik,objectek,server konfig stb. szóval bármit.Sokkal könnyebb a kezelése mint a fájloké.Sokan mondják,hogy nehezebb,de ez nem igaz!Csak azért mondják mert nem ismerik,majd írok egy külön SQL leírást is.
A linkek minõségi sorrendben vannak!
Link 1: http://forum.sa-mp.com/showthread.php?t=122983&highlight=MySql
Link 2: http://forum.sa-mp.com/showthread.php?t=56564&highlight=G-stylez+Mysql
Link 3: http://forum.sa-mp.com/showthread.php?t=7106&highlight=MySql
sscanf2   - Ezt használjuk már az strtok helyett,mivel:Egyzserûbb,gyorsabb,sokoldalúbb.FOntos,hogy a plugin és NE a kód verziót használjuk!
Link: http://forum.sa-mp.com/showthread.php?t=120356&highlight=sscanf2+plugin
zcmd - Parancskezelõ.Így nem OnPlayerCommandText eljárást kell használni,hanem minden parancsnak létre kell hozni egy külön eljárást.El mondom mért jobb: Gyorsabb,egyszerûbb,könnyebb.
sscanf2-vel párosítva a legjobb.Elmondom mért gyorsabb:Az OnPlayerCommandtext végignézi az összes parancsot majd összehasonlítja õket a beírt parancsal,EGYENKÉNT.Ezzel szemben a zcmd eljárásként azonnal meghívja a parancsot.Szóval ha már nem kevés parancsunk van,akkor érzõdik a hatás...
Link: http://forum.sa-mp.com/showthread.php?t=91354&highlight=zcmd
foreach - Ez az ügyes kis függvénykönyvtár helyetesíti a többi ciklust,ugyanis sokkal gyorsabb és profeszionálisabb mint azok,és NEM PAZAROL = GYORSABB!Ez nagyon fontos ha pl. nagyobb férõhelyû szervernél a játékosokon akarunk végigmenni...
Link: http://forum.sa-mp.com/showthread.php?t=92679&highlight=foreach
Streamer Plugin v2.5.2 - Ez lesz az objektumkezelõnk.Akárki akármit mond,ez a legjobb...
Link: http://forum.sa-mp.com/showthread.php?t=102865&highlight=Streamer+plugin
Whirpool - Nos,ez egy jelszó titkosító plugin.Nem csak jelszavak titkosítására alkalmas,viszont (egyenlõre) nem lehet visszafejteni,ezért ez a legjobb.
Link: http://forum.sa-mp.com/showthread.php?t=65290&highlight=Whirpool
Hirtelen ezek jutnak eszembe mint alapok,ha ezekre építünk,biztosak lehetünk benne,hogy a szerverünk gyors és naprakész és biztonságos lesz,illetve nem utolsó esetben nagyban megkönnyítik a scriptelést is!
Eljárások/Függvények
Eljárás = Minden eljárás függvény,de nem minden függvény eljárás.Eljárásnak nevezzük azokat a függvényeket,amik public kulcsszóval kezdõdnek és általában egy értéket adnak vissza,feladatot látnak el.A beépített fügvények a megfelelõ alkalmakkor lépnek mûködésbe.Pl. OnPlayerText ha a játékos ír a chatbe,stb...
Mi is létrehozhatunk eljárásokat,a forward kulcsszóval.Prototípus:
forward fuggveny_neve(parameter1,parameter2,....);
Konkrét példa:
forward Message(playerid,uzenet[]);
Így létrehoztunk egy  Message nevû eljárást,ami 2 paramétert fogad,egy int (integer,egész szám) típusú értéket (Itt egy játékos azonosítót) és egy karakterlánc típusú értéket.Tehát erre a következõképpen hivatkozhatunk:
Message(5,\"HAHA!\");
Természetesen a paraméterek lehetnek változók is:
new str[128] = \"HAHA!\";
Message(playerid,str);
Ez a z eljárás nem jó semmire.Ezen változtatnunk kell!
 
public Message(playerid,uzenet[]) //Itt nem forward,hanem public kulcsszó kell és nem kell pontosvesszõ a sor végére!
{ //Blokkot nyitunk
    SendClientMessage(playerid,0xFFFA,uzenet);
    return 1;
}

 
Így az eljárásunk elküld egy üzenetet a megfelelõ azonosítójú játékosnak.Ezt megoldhattuk volna függvényben is,viszont így idõzítõt indíthatunk!
Prototípus:
SetTimer(funcname[], interval, repeating);
Konkrét példa:
SetTimer(\"Message\", 3000, 0);
Így elindítjuk az idõzítõt ami meghívja a Message függvényt 3 másodperc mulva.Az utolsó paraméter ha 0 vagy false,akkor csak egyszer fut le az idõzítõ,ha 1 vagy true,ismétlõdik kilövésig.
Timer leálítása:
KillTimer(timerid);
Hogy legyen egy timerid-nk,(idõzítõ azonosítónk) kicsit másképpen kell idõzítõt indítani.
new Timer = SetTimer(\"Message\", 3000, 0);
Majd valahol:
KillTimer(Timer);
Ez azért lehetséges,mert a SetTimer függvény visszatérési értéke az azonosítója,mi meg a visszatérési értéket beleraktuk a Timer változóba.Ez viszont több okból is helytelen példa:
1,A mi idõzítõnk paramétereket fogad,viszont ezt nem adhattuk meg a SetTimer függvénnyel!
2,a Timer változót jobb globálisan dekralálni,hogy máshol is használhassuk ne csak függvényen belül!
Tehát:
new Timer; //Mód elején

Timer = SetTimer(\"Message\", 3000, 0);
//Ahol a timert indítjuk

KillTimer(Timer); //Ahol kilõjjük
Az idõzítõket célszerû a script leállásakor kilõni.
Ha paramétereket akarunk átadni az idõzítõnknek,használjuk a SetTimerEx függvényt.
SetTimerEx(funcname[], interval, repeating, const format[], {Float,_}:...);
Konkrétan:
SetTimerEx(\"Message\", 3000, 0,\"is\",5,\"HAHA!\");
Természetesen itt is használhatunk változókat a paraméterekhez.
A 4. paraméter úgy kell megadni,hogy a megfelelõ típus jelõlését kell beírni oda.
i = integer,egész szám
s = string,karakterlánc
d = Lásd: i
a = array,Tömb,a következõ paraméter egy szám kell legyen,az a tömb mérete.
b = bolean,tehát csak igaz/hamis érték lehet
f = float,valós,lebegõpontos szám.(Tört,pl. 0.23)
Az utána következõ paraméterek a megfelelõ értékek.
Függvények - Valamilyen értéket visszadó,vagy feladatot ellátó kód.
Egyszerûen létrehozhatjuk õket kulcsszavak nélkül:
 
Fuggvenyem()
{
    return 1;
}

 
Konkrétabb példa:
 
Name(playerid)
{
    new pname[MAX_PLAYER_NAME];
    GetPlayerName(playerid,pname,sizeof pname);
    return pname;
}

 
Ez a kód visszaadja egy adott azonosítójú játékos nevét.Azért hasznos,mert ezekután elég meghívni ezt a kódot,nem kell újra leírni 100X.
Használat:
 
new str[128];
format(str,128,\"Neved: %s\",Name(playerid));

 
És megformáztuk a játékos nevét egy karakterláncban!Ezt elküldhetjük majd üzenetként stb...
Ha a függvényeket létrehozzuk,de nem használjuk õket sehol,hibát kapunk.Használjuk a stock kulcsszót!
 
stock Name(playerid)
{
    new pname[MAX_PLAYER_NAME];
    GetPlayerName(playerid,pname,sizeof pname);
    return pname;
}

 
Így nem kell használni a függvényt és nem kapunk hibát.
Még nem írtam le mindent!Még sok dolog van amirõl tudni kellene ezzel kapcsolatban,folytatni fogom,ha rosszul fogalmaztam/pontatlan voltam szóljatok!
Scriptek készítése - Hogyan?
Hamarosan....
Folytatása következik....
Várom a véleményeket!Írjátok le ha valamit rosszul írtam/elirtam,szoljatok,írjatok szerintetek hasznos linkeket stb.
« Utoljára szerkesztve: 2012. Február 04. - 00:43:49 írta ChuckNorris »

Nem elérhető InAceX

  • 501
    • Profil megtekintése
Szerver készítés: alapok | Config, Scripting, Tanácsok
« Válasz #1 Dátum: 2010. December 31. - 21:18:46 »
0
Szép részletes leírás.

Szerver készítés: alapok | Config, Scripting, Tanácsok
« Válasz #2 Dátum: 2010. December 31. - 21:28:39 »
0
Idézetet írta: InAceX date=1293826726\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"5060\" data-ipsquote-contentclass=\"forums_Topic
Szép részletes leírás.
 
Még nagyon nincs kész,csak gondoltam postolom az elsõ részét.

Nem elérhető Iceaac

  • 2187
    • Profil megtekintése
Szerver készítés: alapok | Config, Scripting, Tanácsok
« Válasz #3 Dátum: 2011. Január 01. - 03:37:41 »
0
Átfutottam, ami eddig készen van, szépen megírtad.  :) Am a scripteléssel kapcsolatban, szerintem nem lenne értelme megírnod, ott van krisk tutorialja.

Nem elérhető Epsilon

  • 1854
    • Profil megtekintése
Szerver készítés: alapok | Config, Scripting, Tanácsok
« Válasz #4 Dátum: 2011. Január 01. - 10:40:27 »
0
Jó lesz ez :)
Ahelyett, hogy a szerverberles.hu-ról idézel, használhatnád a fórumon belüli leírásokat például úgy,hogy belinkeled õket. (kompaktabb leírás) (pl. GameStar rcon parancsos témája vagy az én konfigos témám)
Az idézeteket nem a szerverberles.hu írta, hanem én.

Szerver készítés: alapok | Config, Scripting, Tanácsok
« Válasz #5 Dátum: 2011. Január 01. - 12:54:02 »
0
Idézetet írta: Epsilon date=1293874827\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"5060\" data-ipsquote-contentclass=\"forums_Topic
Jó lesz ez :)
Ahelyett, hogy a szerverberles.hu-ról idézel, használhatnád a fórumon belüli leírásokat például úgy,hogy belinkeled õket. (kompaktabb leírás) (pl. GameStar rcon parancsos témája vagy az én konfigos témám)
Az idézeteket nem a szerverberles.hu írta, hanem én.
 
Át fogom linkelni azokra a témákra amiket említettél,csak elsõre nem találtam meg õket.  :)
Scriptelést azért írok bele,mert én olyan dolgokat fogok belerakni ami nincs krisk tutorialjában.
E:
Kicsit kiegészítettem a végét illetve belinkeltem Eps leírását.
E2:
Kiemeltem a témát,lecseréli Mambo régi témájának helyét,mivel ez részletesebb.
« Utoljára szerkesztve: 2011. Január 01. - 13:20:38 írta ChuckNorris »

Nem elérhető Epsilon

  • 1854
    • Profil megtekintése
Szerver készítés: alapok | Config, Scripting, Tanácsok
« Válasz #6 Dátum: 2011. Január 01. - 13:31:55 »
0
Az Unkown mód nem feltétlen a a plugin hibáját jelzi, hanem egy a pluginhoz tartozó fájl hiányát.
Vagy valami más ok miatt van, ami miatt nem tudott a plugin betöltõdni.
E: http://sampforum.hu/index.php?topic=8939.0
« Utoljára szerkesztve: 2011. Január 01. - 13:38:06 írta Epsilon »

Szerver készítés: alapok | Config, Scripting, Tanácsok
« Válasz #7 Dátum: 2011. Január 01. - 14:06:44 »
0
Módosítottam,és a tartalomjegyzéket linkesítettem.

Nem elérhető ZeRo

  • 4620
  • Ex Globális Moderátor
    • Profil megtekintése
Szerver készítés: alapok | Config, Scripting, Tanácsok
« Válasz #8 Dátum: 2011. Január 04. - 21:00:13 »
0
Tetszik az ötlet, és a kivitelezés is, fõleg az, hogy már megírt leírásokat linkelsz be. :)

Szerver készítés: alapok | Config, Scripting, Tanácsok
« Válasz #9 Dátum: 2011. Január 04. - 21:23:47 »
0
Idézetet írta: ZeRo date=1294171213\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"5060\" data-ipsquote-contentclass=\"forums_Topic
Tetszik az ötlet, és a kivitelezés is, fõleg az, hogy már megírt leírásokat linkelsz be. :)
 
Köszönöm,de ezt nagyszabású leírásnak tervezem,még asokat kell dolgozzak vele.  :)
Kibõvítve!

Nem elérhető Popec16

  • 1267
    • Profil megtekintése
Szerver készítés: alapok | Config, Scripting, Tanácsok
« Válasz #10 Dátum: 2011. Január 06. - 15:55:39 »
0
Nagyon szép kis tut az összes !! :D
De te ennyire ráérsz am ? xD

Szerver készítés: alapok | Config, Scripting, Tanácsok
« Válasz #11 Dátum: 2011. Január 06. - 18:32:24 »
0
Ezeket pici kis részletekben írom szabadidõmben,aztán összerakom és tádá  :D

Nem elérhető Niko

Szerver készítés: alapok | Config, Scripting, Tanácsok
« Válasz #12 Dátum: 2011. Január 07. - 22:51:06 »
0
Eddig nagyon szépen haladsz, csak gratulálni tudok! :)

Nem elérhető kurta999

  • 2759
  • Éllő fédisznó
    • Profil megtekintése
Szerver készítés: alapok | Config, Scripting, Tanácsok
« Válasz #13 Dátum: 2011. Január 09. - 16:01:44 »
0
Szép leírás.
Majd odaírhatnád, hogy ha nagy tömböket akarunk kezelni ( Pl Házrendszer ), akkor célszerûbb a GVar plugint használni.

Szerver készítés: alapok | Config, Scripting, Tanácsok
« Válasz #14 Dátum: 2011. Január 09. - 18:52:50 »
0
Idézetet írta: kurta999 date=1294585304\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"5060\" data-ipsquote-contentclass=\"forums_Topic
Szép leírás.
Majd odaírhatnád, hogy ha nagy tömböket akarunk kezelni ( Pl Házrendszer ), akkor célszerûbb a GVar plugint használni.
 
Mindent le fogok írni amit csak tudok,csak kevés az idõm.

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal