Szerző Téma: (GY.I.K.) Gyakran Ismételt Kérdések  (Megtekintve 4161 alkalommal)

Nem elérhető Dfoglalo

  • 4069
  • Globális Moderátor
    • Profil megtekintése
(GY.I.K.) Gyakran Ismételt Kérdések
« Dátum: 2014. augusztus 09. - 21:19:13 »
+8 Show voters
Információk
 
Ez a téma azzal a céllal jött létre, hogy összegyûjthessük a szkripteléssel kapcsolatos Gyakran Ismételt Kérdéseket. Többek között azért, hogyha az itt leírt apróbb kérdések között megtalálod a választ a problémádra, ne nyiss neki külön témát! Amennyiben egy kérdés és rá a válasz nem szerepel az alábbi listán, de te szívesen hozzáadnád, írd le azt egy hozzászólás formájában. Amennyiben hozzászólásod elfogadásra kerül, az felkerül erre a listára (természetesen a nevedet feltüntetve és a hozzászólásod sem kerül törlésre). Ha viszont értelmetlen kérdést + választ írsz és/vagy tartalma valótlan, a hozzászólásod törlésre kerül. Ezen felül minden más jellegû hozzászólás is törlésre kerül.
 
Gyakran Ismételt Kérdések
 
Tartalomjegyzék
  • Fordítási hiba
  • Run time error: 19
  • Hoszting hiba
  • RemoveBuildingForPlayer helye
  • Alap be- és kijáratok kivétele
  • Lámpa- és motor beállítás kézzel
  • Stunt bónuszok kikapcsolása
  • Hiányzó DLL-ek
  • Object konvertálás és egyéb szkriptelési eszközök
  • Nativechecker
  • PVar vagy Változó?


    A pawnocc.exe, azaz a pawno.exe fordítója, a compiler befagy (kezdõknek: amikor a .pwn fájlt \"konvertáljuk\" .amx fájllá). Mi okozza? Hogyan oldjam meg?
    Olyan drasztikus hibát vétettél a forráskód megírásakor, amelyet a fordító sem tud értelmezni. Gyakori hiba például, hogy rosszul készítetted el a blokkokat. Példa (a kódnak nincs sok értelme, csak a hibás blokkokat magyarázza meg):
     
    // Helytelenül
    if(4/2 == 2)
    {
        if(true != false)
        { // Nyitod a blokkot
            SendClientMessage(playerid, 0xFFFFFFFF, \"4/2 == 2\");
    }

     

    // Helyesen
    if(4/2 == 2)
    {
        if(true != false)
        { // Nyitod a blokkot
            SendClientMessage(playerid, 0xFFFFFFFF, \"4/2 == 2\");
        } // Zárod ezt a blokkot
    }

     
    Ez pedig a hibától kezdve a mód összes többi részét hibásnak érzékeli. Ettõl pedig befagy az egész. Persze emellett lehet más is az okozója, de ez a leges leggyakrabban vétett hiba. Erre tehát mindig figyeljünk oda!
    Megoldani úgy lehet, ha átnézzük az éppen megírt részt, hibák után kutatva, majd kijavítjuk a talált hibákat. Érdemes biztonsági mentést csinálni a módról minden egyes szerkesztés elõtt.
     
    Vissza az oldal tetejére
     
    Run time error 19: \"File or function is not found\" hiba
    A hiba okát legegyszerûbben a Nativechechker plugin segítségével ismerhetjük meg. Ennek ellenére leírom, hogy mik azok a dolgok, amelyek a hibát általában okozzák és mi rájuk a megoldás, hogy a jövõben ilyen esetekben rutin szerûen, 3 másodperc alatt megoldható legyen a probléma, a plugin felesleges telepítése nélkül.
    Ezt több dolog is okozhatja. Az egyik ilyen, hogy hiányzik a .cfg fájlban megadott mód a gamemodes mappából. Ez a ritkább eset. Lehet még olyan eset is, hogy a módhoz szükséges valamely összetevõ hiányzik a scriptfiles mappából. A leggyakoribb viszont az, hogy a módból hiányzik valamilyen funkció. Például egy plugin, vagy pluginok. Sokszor csak az a probléma, hogy a használt pluginok verziója nem egyezik meg a fordításkor használt, az egyes pluginokhoz tartozó .inc fájlok verziójával. Vagy az, hogy nem töltöd be az összes plugint. Tehát ha ezzel a hibával találkozol, rögtön tedd a következõket:
     
  • Szerezd be a mód futtatásához szükséges pluginok legfrissebb verzióját innen
  • A pluginhoz tartozó, újonnan letöltött, legfrissebb .inc fájlokat másold be a pawno/include mappába
  • Fordítsd újra a módot (kezdõknek: amikor a .pwn fájlt \"konvertáljuk\" .amx fájllá)
  • Írd felül a plugins mappában lévõ pluginokat a legújabb, újonnan letöltött pluginokkal
  • Indítsd el a módot

 

Ha így sem indulna el a módod, akkor a következõ dolgok jöhetnek számításba:
 
  • Valamit elrontottál

  • Nem a pluginokkal van probléma, hanem pl.
    • Hiányzik egy-egy szükséges fájl a scriptfiles mappából

    • Tallóztál egy plugint, vagy scriptfilet igénylõ .inc fájlt, ami nem is lenne szükséges, de mivel szerepel az .amx fájlban, ezért keresi a szerver is


    • Nem a megfelelõ pluginokat használod
    • A mód csak régebbi pluginokkal mûködik

     


Ha ezek után sem indulna el a mód, csak akkor nyiss csak témát, melybe ajánlatos bemásolni a server_log.txt aktuális tartalmát is!
 
Vissza az oldal tetejére
 
\"A gépemen jó a szerver, de a hosztingos szerveren már nem!\"
A hosztingok általában Linux operációs rendszert használnak, a te gépeden viszont valószínûleg Windows van. E miatt a te gépeden a pluginokat .dll formában, míg a bérelt szerveren már .so kiterjesztésben kell használni. Annyi a teendõd, hogy a megfelelõ pluginokat letöltöd .so formátumban is, majd feltöltöd FTP-vel a bérelt szerverednek. Ezek után a .cfg-ben a plugin nevek végére odírod, hogy .so (ha Windowson odaírtad, hogy .dll, akkor a .dll helyett csak .so szerepeljen! Azonban alapból Windowson nem szükséges kiírni azt, hogy .dll, ugyanis ott bõven elég a plugin neve is). Ha ismét problémába ütközöl, kövesd a \"Run time error: 19\" címû pont lépéseit.
Ha ezek után sem javul a helyzet, vagy nem pluginnal kapcsolatos problémáid vannak, nyiss nyugodtan témát!
Hová tegyem az object törléssel kapcsolatos kódot, tehát a RemoveBuildingForPlayer függvényeket?
Az OnPlayerConnect callback alá. Példa:
 
public OnPlayerConnect(playerid)
{
    RemoveBuildingForPlayer(playerid, 615, 0.0, 0.0, 0.0, 200.0);
    return 1;
}

 

Ettõl függetlenül bárhol máshol használhatod, de célszerû elintézni a törlést a játékos csatlakozásakor.
 
Vissza az oldal tetejére
 
Hogyan tudom kikapcsolni az alap ki- és bejáratokat (azokat a sárga nyilakat a térképen, amelyeknél be lehet menni egy-egy helyre, pl. pizzázóba)?
Az DisableInteriorEnterExits függvény segítségével. Példa:
 
public OnGameModeInit()
{
    DisableInteriorEnterExits();
    return 1;
}

 
 
Vissza az oldal tetejére
 
A kocsi lámpái automatikusan állítódnak. Hogyan tudom én beállítani õket?
A ManualVehicleEngineAndLights függvény segítségével a jármû nem fog beindulni automatikusan ha beleülsz, illetve nem fog magától felkapcsolódni a lámpája sötét részeken (pl. egy alagútban). Hasznos, ha te szeretnéd vezérelni a motort és a lámpákat, például egy saját kocsi rendszernél. Példa:
 
public OnGameModeInit()
{
    ManualVehicleEngineAndLights();
    return 1;
}

 

Ha nem csak engedélyezni szeretnéd a dolgot, hanem használni is, akkor azt a következõképpen teheted meg: lekérdezed a kocsi paramétereit, eltárolva õket egy-egy változóba, majd csak azt a paramétert állítod át más értékre, amelyiket szeretnéd. A többi paramétert pedig meghagyod az eredetinek a változók beírásával. Példa, melyben a motort bekapcsoljuk:
 
new engine, lights, alarm, doors, bonnet, boot, objective;
GetVehicleParamsEx(GetPlayerVehicleID(playerid), engine, lights, alarm, doors, bonnet, boot, objective);
SetVehicleParamsEx(GetPlayerVehicleID(playerid), 1, lights, alarm, doors, bonnet, boot, objective);

 
 
Vissza az oldal tetejére
 
Stunt bónuszok kikapcsolása
A Singleplayerhez hasonlóan alapbeállításokkal a Multiplayerben is kapsz pénzt egyes mutatványokért, legyen az ugratás, kétkerekezés, vagy szaltózás. Ez jól jöhet egyes stunt szervereken, de RPG-n azonnal idegesítõvé és persze feleslegessé válik. Ha nincs rá szükség, egyszerûen kikapcsolható a mód betöltésekor:
 
public OnGameModeInit()
{
    EnableStuntBonusForAll(0);
    return 1;
}

 

Amennyiben nem szertnénk eltörölni minden egyes játékos számára ezt a lehetõséget, használhatunk egy másik függvényt is:
 
EnableStuntBonusForPlayer(playerid, 0);

 

Ha ismét használni szeretnénk a bónuszt, egyszerûen csak írjuk át a 0-t 1-re (vagy true-ra) a megfelelõ helyen.
 
Vissza az oldal tetejére
 
Hiányzó DLL-ek
Ez a probléma Windowson szokott gyakran elõfordulni, miszerint a számítógéprõl hiányoznak egyes, a szerver futtatásához elengedhetetlen dll fájlok. Ezek pótlásának a legegyszerûbb módja, hogy letöltöd, majd be kell tenni a szerver fõkönyvtárába - abba a mappába, ahol a samp-server.exe is található. Azonban nem mindegy, hogy mely dll fájlokat teszed be a szervered fõkönyvtárába, ugyanis az operációs rendszered lehet 32 és 64 bites is. Ha ezekre a fájlokra van szükségem, én általában a DLL Files weboldalára látogatok el, ahonnan letöltöm az operációs rendszeremnek megfelelõ, számomra szükséges dll fájlokat. Az alább listán összegyûjtöttem azokat a fájlokat, amelyeket általában kér a szerver indításkor. Ha esetleg nem lenne rajta a listán az egyik fájl, amelyet nálad is kért, keresd ki azt a DLL Files weboldalán, illetve lehetõleg írj róla hozzászólást, hogy ez a lista is bõvítésre kerüljön. Kattints a szükséges fájl nevére és a letöltés megkezdõdik! Amennyiben 64 bites operációs rendszerrel rendelkezel de a keresett fájl csak 32 bitesként szerepel a listán, próbálkozz a 32 bites verzióval, ugyanis valószínûleg nem létezik belõle 64 bites verzió. Ugyanakkor elõfordulhat az is, hogy nem szükséges 64 bites plugint használnod annak ellenére, hogy 64 bites operáció rendszered van. Mindezt saját tapasztalatból írtam le nektek. A letöltési linkek nem dll-files-osok, hanem solidfiles-osok, mert a dll files gyakran váltogatja a közvetlen letöltési linkjeit. Azonban a dll-files-os oldal is linkelve van a zárójelen belül, azonban ott már meg kell keresni a számodra megfelelõ verziót. Fontos: a solidfiles-ról való letöltéskor a nagy zöld Download gomb alatti Direct download link feliratra kattints!
32 bites operációs rendszerre
libmysql.dll - v5.5.13.0 (DLL-Files.com)
msvcp100.dll - v10.0.30319.1 (DLL-Files.com)
msvcp110.dll - v11.0.51106.1 (DLL-Files.com)
msvcp120.dll - v12.0.21005.1 (DLL-Files.com)
msvcr100d.dll - v10.0.40219.325 (DLL-Files.com)
msvcr100.dll - v10.0.30319.1 (DLL-Files.com)
msvcr110.dll - v11.0.51106.1 (DLL-Files.com)
msvcr120.dll - v12.0.21005.1 (DLL-Files.com)
64 bites operációs rendszerre
msvcp100.dll - v10.0.40219.325 (DLL-Files.com)
msvcp110.dll - v11.0.51106.1 (DLL-Files.com)
msvcp120.dll - v12.0.21005.1 (DLL-Files.com)
msvcr100.dll - v10.0.40219.325 (DLL-Files.com)
msvcr110.dll - v11.0.51106.1 (DLL-Files.com)
msvcr120.dll - v12.0.21005.1 (DLL-Files.com)
Plugin Pack
Minden felsorolt plugin letöltése.
 
Vissza az oldal tetejére
 
Object konvertálás és egyéb szkriptelési eszközök
A fórum fenti menüsorában, a Szkriptelés fül alatt számos hasznos szkriptelési eszközt találsz. Ezek között van object (map) konvertáló is, amely hasznos lehet, ha egyszerûen, online szeretnél mapokat konvertálni SAMP és az MTA között. E mellett vannak még egyéb eszközök is, melyek segítségével ha meg tudod oldani a problémádat, felesleges témát nyitni.
 
Vissza az oldal tetejére
 
Nativechecker
A Nativechecker plugin beleírja a server_log.txt-be azokat a hibákat, amelyek fennállnak a módban annak ellenére, hogy a módot sikeresen lefordították. Ritkább esetekben elõfordulhat, hogy akkor is hibát jelez, mikor a mód tökéletesen fut, azonban ekkor is érdemes utána járni a hibának és javítani azokat. Leggyakrabban akkor válik segítségünkre, amikor a mód nem indul el egy \"File or function is not found\" üzenettel, esetleg még a szerver is leáll és nem tudjuk, hogy pontosan mi a hiba. Errõl bõvebben itt olvashatsz.
Letöltés
Hivatalos téma
 
Beküldte: Nukerdog
 
Vissza az oldal tetejére
 
PVar vagy Változó?
Sokak számára kérdést jelent, hogy PVar-okat, vagy változókat használjon. Itt természetesen a játékosokhoz kötött változókról beszélünk, amelyek általában ilyen formában vannak jelen:
 
new Valtozo[MAX_PLAYERS];
Valtozo[playerid] += 5;

 

A más jellegû változók jelenléte persze elengedhetetlen, ez nem vitás. Ennek elõsegítése érdekében most egy táblázatba szedtem össze különbözõ szempontokat, melyek az egyikre biztosan igazak. Nem feltétlenül jelent a pozitív kicsengésû szó, például az \"Igen\" elõnyt, így az adott szempontnál az elõnyösebbik versenyzõ zöld színnel van kiemelve.
 

Szempont
PVar
Változó
Függvény e?
Igen
Nem
Alapértékre kell õket állítani csatlakozáskor vagy lecsatlakozáskor?
Igen
Igen
Hányszor/mikor kell õket létrehozni?
Minden játékos számára külön, minden egyes csatlakozáskor
Egyszer, a mód indításakor
Használható e ugyanaz a PVar/Változó több Filterscriptben és a Gamemodeban egyaránt?
Igen
Nem
Operálás
Hosszadalmas, több függvényt is igénybe vesz, bonyolultabb mûveleteknél gyakran lokális változókra is szükségünk van
Rettentõ egyszerûen és röviden elvégezhetõ a megszokott operátorok segítségével
Adat kinyerése
Minden alkalommal le kell kérdezünk a PVar értékét egy külön függvény segítségével, vagy egyszeri lekérdezés után egy változóban kell eltárolnunk az adatot
A változó szimpla leírásával kinyerjük az adatot
Ékezetek használata
Lehet ékezetet használni, azonban programozásban nem nagyon használatosak. Ennek ellenére ez egy elõnyös tulajdonság, elvégre egy népszerû játék egyszerûbb programnyelvérõl van szó, melyet bármely hétköznapi ember könnyedén elsajátíthat
Nem használhatóak ékezetek, bár ez sokak számára nem jelent gondot
Forráskódban elfoglalt hely, példánkban egy érték növelése 1-el
64 karakter
18karakter
Összesítés
2 pont - VESZTES
5 pont - NYERTES

Ugyan ezen szempontok alapján a változók nyetek, de persze ha valaki a PVar-okat szeretné használni, csak nyugodtan.
 
« Utoljára szerkesztve: 2016. október 06. - 11:20:35 írta Flαsн »

(GY.I.K.) Gyakran Ismételt Kérdések
« Válasz #1 Dátum: 2014. augusztus 30. - 17:32:20 »
0 Show voters
Gondolom törölni fogjátok ezt a hozzászólást. Csak annyit szeretnék még egészíteni rajta, hogy a
 
Run time error 19: \"File or function is not found\" hiba[/quote]
megoldására alkalmas lehet a Nativechecker plugin, ami
egy nagyon egyszerû plugin, de roppant hasznos: lényege, hogy az idegesítõ \"File or function is not found\" hiba helyett konkrétan elmondja, hogy mi, hol hiányzik.[/quote]

Nem elérhető Dfoglalo

  • 4069
  • Globális Moderátor
    • Profil megtekintése
(GY.I.K.) Gyakran Ismételt Kérdések
« Válasz #2 Dátum: 2014. augusztus 30. - 18:17:52 »
0 Show voters
Nem töröljük, mert a témát szeretnéd vele \"fejleszteni\". Majd ha gépen leszek, akkor szépen bele is szerkesztem.


Bocsi a késésért, de csak most volt rá idõm - téma frissítve :D


Illetve kiegészítve egy, a PVarokat és a Változókat összehasonlító táblázattal.
« Utoljára szerkesztve: 2014. szeptember 04. - 20:16:43 írta Dfoglalo »

(GY.I.K.) Gyakran Ismételt Kérdések
« Válasz #3 Dátum: 2014. október 31. - 13:55:07 »
0 Show voters
MSVCP120.dll-t kérte nekem. Szerintem hozzá lehetne azt is adni
Na meg az MSVCR120.dll-t is
« Utoljára szerkesztve: 2014. október 31. - 14:12:45 írta Nukerdog »

Nem elérhető Dfoglalo

  • 4069
  • Globális Moderátor
    • Profil megtekintése
(GY.I.K.) Gyakran Ismételt Kérdések
« Válasz #4 Dátum: 2014. október 31. - 14:32:27 »
0 Show voters
Hozzáadva, pack frissítve.

(GY.I.K.) Gyakran Ismételt Kérdések
« Válasz #5 Dátum: 2015. február 16. - 00:40:25 »
0 Show voters
-Folyton crashel a szerver
-Ha egy ini fájlt szeretnél használni, akkor az azt tartalmazó mappának
léteznie kell, szóval ha logok/chat.log fájlt használnánk, akkor kell
létrehozni egy logok mappát, ami tartalamzhatja a fájlunkat.
« Utoljára szerkesztve: 2015. február 16. - 18:02:42 írta PeterBlue »

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal