Portolás SA:MP-ról open.mp-re – Y_Less magyarázata alapjánA SA:MP világát ismerőknek talán nem kell bemutatni
Y_Less nevét. Ő volt az egyik legismertebb fejlesztő és dokumentáló arc a közösségben – számtalan script, plugin és útmutató mögött állt.
Az open.mp megjelenése után ő írta meg az egyik legérthetőbb, legőszintébb leírást arról, mit is jelent valójában a váltás a régi SA:MP szerverekről az open.mp platformra.
Ez a cikk az ő 2024 márciusában írt összefoglalója alapján készült, kiegészítve azóta szerzett tapasztalatokkal és a projekt jelenlegi állásával.
Miért volt szükség portolásra?Y_Less is egyértelműen leírta: a SA:MP évek óta egyfajta „limbóban” volt.
Nem érkeztek frissítések, a közösség pedig különféle kerülőutakkal – pluginokkal, includokkal és egyéni hackekkel – próbálta életben tartani a rendszert.
Olyan kiegészítések születtek, mint a
YSF plugin vagy a
fixes.inc, amelyek rengeteg hibát és korlátozást javítottak ki, miközben magához a forráskódhoz nem volt hozzáférés.
Ezek viszont elérték a határaikat.
Az open.mp tehát nem „új mod”, hanem
a SA:MP szerver teljes újraírása modern alapokon, amely beépíti mindazt, amit a közösség az évek során megtanult és megoldott – csak épp szisztematikusan és átláthatóan.
Mit jelent a portolás a gyakorlatban?A cél egyértelmű volt:
a régi kód működjön tovább, de a motor legyen új.
Y_Less szerint az open.mp úgy készült, hogy a meglévő PAWN scriptjeid 95%-ban változtatás nélkül fussanak.
Ez azonban nem jelenti azt, hogy minden apró részlet ugyanúgy viselkedik, mint korábban.
Néhány tipikus változás, amit érdemes ismerni, ha portolsz:
- HideMenuForPlayer: korábban nem vette figyelembe, hogy melyik menüt látja a játékos, most viszont konkrétan azt zárja be, amit megadsz – érdemes a GetPlayerMenu() használata.
- SetPlayerAttachedObject: SA:MP-ban a csatlakoztatott objektumok gamemode-váltás után is megmaradtak, open.mp alatt viszont újra kell őket adni OnPlayerConnect-ben. Ez tudatos döntés volt, hogy tisztább legyen a memóriahasználat.
- ClearAnimations: korábban autóban ülő játékosokat is “kidobott” a járműből, ez most megszűnt. Ha tényleg ki akarod venni valakit az autóból, használd a RemovePlayerFromVehicle(playerid, true) parancsot.
- Death money: a játékos halálakor levont 100$ kikerült a motorból – mostantól minden pénzmozgást a scriptnek kell kezelnie. Ha szeretnéd megtartani, egyszerűen tedd bele a GivePlayerMoney(playerid, -100) sort az OnPlayerDeath-be.
- OnPlayerConnect viselkedése: SA:MP-ban a filterscriptek nem hívták meg ezt az eseményt a már csatlakozott játékosokra. Az open.mp egységesítette a logikát, most minden script típusnál ugyanúgy működik – nem kell többé külön hurok az inicializáláshoz.
- GameText és textdraw-ok: az eredeti SA:MP több game text stílusa hibásan működött (pl. nem tűnt el, vagy folyamatosan villogott). Az open.mp ezeket textdraw alapra építi újra, így minden stílus használható – bár a fade effektek eltűntek.
- Pool méretek (GetPlayerPoolSize stb.): ezek a függvények elavultak és hibás értékeket adtak. Az open.mp-ban teljesen el lettek távolítva – helyette a modern foreach (new i : Player) struktúrát kell használni.
- Névhasználat és helyesírás: végre egységes angol (brit) szavakat használ a rendszer: pl. TextDrawBoxColour az amerikai TextDrawBoxColor helyett.
Mindezek a változások logikusak, csak az évek alatt megszokott hibákat és “furcsaságokat” szüntetik meg. Aki eddig YSF-et vagy fixes.inc-et használt, annak ezek a változtatások nem lesznek újak – mostantól csak épp a motor maga kezeli őket.
Mitől jobb így?A SA:MP-ban a közösség több tucat patch és workaround rétegét építette egymásra – az open.mp ezekből mindent beépített,
de a forráskód szintjén, nem plugin-szinten.
Ez azt jelenti, hogy:
a motor stabilabb, kevesebb összeomlást okoz,
egységesebb a működés (nincs több “ez filterscript alatt másképp viselkedik” típusú bug),
és végre valós alapot ad a jövőbeli fejlesztéseknek, mint például a
cross-play támogatás.
Hol tart most a fejlesztés?Jelenleg az open.mp a szerveroldalon szinte teljes, a fejlesztők már fél-nyilvános béta tesztelést futtatnak.
Itt elsősorban scriptereket keresnek, akik kipróbálják a meglévő SA:MP scriptjeiket az új motor alatt, és jelentik a hibákat vagy eltéréseket.
A nagy cél most a kliensoldal – főleg a
GTA: San Andreas Definitive Edition verzióhoz készülő kliens, amely lehetővé tenné, hogy PC-s, Androidos és Definitive játékosok
egyazon open.mp szerveren játszanak együtt.
Ez lenne az igazi áttörés: a közösség újraegyesítése, platformtól függetlenül.
Mit jelent ez neked, ha volt régi szervered?Egyszerűen:
nem kell újrakezdened semmit.A scriptjeid tovább élhetnek, csak egy modernebb környezetben. Az open.mp célja nem az volt, hogy lecserélje a SA:MP-ot, hanem hogy a régi alapokat megtartva továbbvigye azt.
Ha komolyan gondolod a fejlesztést, most érdemes elkezdeni ismerkedni a dokumentációval, mert ha a kliensoldal megjelenik, az open.mp nagy eséllyel újra életet lehelhet a multiplayer közösségbe.
És nem csak retroból – hanem azért, mert a rendszer végre megérkezik a 2020-as évek technikai szintjére.