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égekEszkö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=MySqlLink 2: http://forum.sa-mp.com/showthread.php?t=56564&highlight=G-stylez+MysqlLink 3: http://forum.sa-mp.com/showthread.php?t=7106&highlight=MySqlsscanf2 - 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+pluginzcmd - 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=zcmdforeach - 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=foreachStreamer 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+pluginWhirpool - 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=WhirpoolHirtelen 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ényekEljá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énTimer = SetTimer(\"Message\", 3000, 0); //Ahol a timert indítjukKillTimer(Timer); //Ahol kilõjjükAz 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áms = string,karakterláncd = Lásd: ia = 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 lehetf = 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.
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;}
Fuggvenyem(){ return 1;}
Name(playerid){ new pname[MAX_PLAYER_NAME]; GetPlayerName(playerid,pname,sizeof pname); return pname;}
new str[128];format(str,128,\"Neved: %s\",Name(playerid));
stock Name(playerid){ new pname[MAX_PLAYER_NAME]; GetPlayerName(playerid,pname,sizeof pname); return pname;}
Szép részletes leírás.
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.
Tetszik az ötlet, és a kivitelezés is, fõleg az, hogy már megírt leírásokat linkelsz be.
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.