mSelection Bevezetõ és frissítéseiHasznaEzzel hozhatjuk létre az új 0.3x-ben lévõ új modelnézõt (bõvebben itt olvashatsz róla). Ez azért hasznosabb, mint a SA:MP Wikin lévõ függvény, mert míg azt, hogy egy Skin nézõt el akarnánk készíteni egymás után be kéne írnunk a skin ID-ket és a minden skinidhez függvényt,ami elég sok sor lenne, ellentétben ezzel az includeal ami a fájlból simán kiolvassa a modelidt, a poziciókat és az egészet el lehet rendezni pár sorból. Ennek a készítõje D0erfler, aki egy Béta Teszter.Frissítések- 1.1 R3
-Javítva OnPlayerClick(Player)TextDraw mûködése (leblokkolása)
-Javítva a kiválasztó menü azonnali bezáródása, amikor a korábbi verziókban használva volt OnDialogResponse-nál. - 1.1 R2
-
Javítva a bug az ESC lenyomásával.- 1.1
- Javítva a bug az ESC lenyomásával.
-Hozzáadva egy Dynamic Player menü (lásd mint a streamer pluginnál
-Hozzáadva a \'Cancel\' gomb a menükhöz- 1.0 R3
-Javítva a ShowModelSelectionMenu bugja az OnPlayerModelSelectionben - 1.0 R2
-Lehetõségünk van ShowModelSelectionMenu-t használni az OnPlayerModelSelectionbenFüggvényei és eljárásaiAz összes listája
// Mindkettõre érvényes (a static (- statikus) és a player( - játékos) listára is)
HideModelSelectionMenu(playerid)
//Statikus lista
LoadModelSelectionMenu(f_name[])
ShowModelSelectionMenu(playerid, ListID, header_text[], dialogBGcolor = 0x4A5A6BBB, previewBGcolor = 0x88888899 , tdSelectionColor = 0xFFFF00AA)
forward OnPlayerModelSelection(playerid, response, listid, modelid);
//Dinamikus játékos lista
ShowModelSelectionMenuEx(playerid, items_array[], item_amount, header_text[], extraid, Float:Xrot = 0.0, Float:Yrot = 0.0, Float:Zrot = 0.0, Float:mZoom = 1.0, dialogBGcolor = 0x4A5A6BBB, previewBGcolor = 0x88888899 , tdSelectionColor = 0xFFFF00AA)
forward OnPlayerModelSelectionEx(playerid, response, extraid, modelid);
A fájlunk kinézeteMindenek elõtt, ahhoz hogy kiolvassa az id-kat a fájlból a következõ minta szerint kell legyenek a paraméterek:
modelID (- KÖTELEZÕ !!! ) X rotáció (magyarúl kb forgásszöget jelent) Y rotáció, Z rotáció, Zoom. ( A modelID-n kivül a többi NEM KÖTELEZÕ, OPCIONÁLIS !!!)
Megjegyzésem még hozzá: Ahhoz, hogy te mondjuk autókat rakj be a listába a játékba, a scriptfiles mappádban létre kell hozz egy .txt tömböt és oda beírni a példa szerint a paramétereket és úgy ki lesz olvasva a fájlból az adat és benne fog szerepelni a listába.
Infernus listába rakása - A fájlban hogy kell szerepeljen
411
411 180.0
411 0.0 180.0
411 0.0 0.0 180.0
411 0.0 0.0 0.0 1.0
Az összes megoldás jó, és a listában meg fognak jelenni különbözõ rotációval (magyarán el lesznek forgatva a meghatározott irányba, ha megadtuk a paramétereit)
460 16.0 0.0 -55.0
476 16.0 0.0 -55.0
511 16.0 0.0 -55.0
512 16.0 0.0 -55.0
513 16.0 0.0 -55.0
519 16.0 0.0 -55.0
520 16.0 0.0 -55.0
553 16.0 0.0 -55.0
577 16.0 0.0 -55.0
592 16.0 0.0 -55.0
593 16.0 0.0 -55.0
Ha egy XYZ rotáció vagy a Zoom több sorban ugyan az, akkor ezeknek a paramétereknek az értékeik csak egyszer lesznek elmentve memóriatakarékosság érdekébõl. ( Ergó ha 100 autónak ugyan az a rotációja csak egy rotáció lesz elmentve és a többihez pedig hozzáadja majd.)
Függvények LoadModelSelectionMenu(f_name[])
Beolvassuk a fájlból a menühöz való tartalmakat. A visszatérése az listid (-listának az azonosítója) lesz.
Paraméterek
f_name - A fájlnak a neve amiben tároljuk a menühöz kellõ modelidkat
returns - A listának az ID-ja
HideModelSelectionMenu(playerid)
Eltüntetjük az adott játékosnak a kiválasztós menüjét
playerid - Annak a játékosnak az azonosítója akinek eltüntetjük a menüt.
returns - Nem tér vissza semmivel
ShowModelSelectionMenu(playerid, ListID, header_text[], dialogBGcolor = 0x4A5A6BBB, previewBGcolor = 0x88888899 , tdSelectionColor = 0xFFFF00AA)
Ezzel mutatjuk meg a játékosnak a menüt ( ez volt a fentebb / a frissítésekben emlegetett Dinamikus Játékos Lista)
playerid: Játékos Azonosítója
ListID: A listának / menünek ID-ja (azonosítója)
header_test[]: A menünek a fejléce vagy címe
dialogBGcolor(opcionális): Az 1* szerint saját magunk színezhetjük a hátterét
previewBGcolor(opcionális):A 2*-al elõnézhetjük (preview) milyen szinû lesz a választott tárgy háttere
tdSelectionColor(opcionális): A 3*-al beszínezhetjük a választott tárgy hátterét
returns: 1 - Ha sikeres 0 - Ha sikertelen
ShowModelSelectionMenuEx(playerid, items_array[], item_amount, header_text[], extraid, Float:Xrot = 0.0, Float:Yrot = 0.0, Float:Zrot = 0.0, Float:mZoom = 1.0, dialogBGcolor = 0x4A5A6BBB, previewBGcolor = 0x88888899 , tdSelectionColor = 0xFFFF00AA)
playerid: Játékos Azonosítója
items_array[]: A tárgyak tömbjének mérete amelyek szerepelnek a listában
item_amount: A tárgyak mennyisége az items_array[]-ben (Példáúl: item_amount = 3 akkor az items_array[0-2] lesz (mivel amount egyenlõ 3-al és a számlálást 0-tól kezdjük, így 0-tól kettõig fog tartani))á
header_test[]: A menünek a fejléce vagy címe
extraid: Az ID-ja annak a tárgynak amely átadja az ID-jának értékét az OnPlayerModelSelectionEx-nek a kiválasztás után.
Xrot: X rotáció a listában szereplõ modelnek (lásd a felsõ képen a 2* vagy a 3*)
Yrot: Y rotáció a listában szereplõ modelnek (lásd a felsõ képen a 2* vagy a 3*)
Zrot: Z rotáció a listában szereplõ modelnek (lásd a felsõ képen a 2* vagy a 3*)
mZoom: Nagyítás a listában szereplõ objectre.
dialogBGcolor(opcionális): Az 1* szerint saját magunk színezhetjük a hátterét
previewBGcolor(opcionális):A 2*-al elõnézhetjük (preview) milyen szinû lesz a választott tárgy háttere
tdSelectionColor(opcionális): A 3*-al beszínezhetjük a választott tárgy hátterét
returns: 1 - Ha sikeres, 0 - Ha sikertelen
Eljárások OnPlayerModelSelection(playerid, response, listid, modelid)
Akkor hívódik meg amikor a játékos kiválaszt egy modelt vagy kilép a listából
playerid - A játékos ID-je
response- 1 - Ha a játokos kiválasztotta a modelt 0 - Ha kilépett
listid - A listának az ID-ja
modelid- A kiválasztott model id-ja.
OnPlayerModelSelectionEx(playerid, response, extraid, modelid)
Akkor hívódik meg, ha a játékos kiválaszt egy modelt vagy kilép a listából
playerid - A játékos ID-je
response- 1 - Ha a játokos kiválasztotta a modelt 0 - Ha kilépett
extraid - Az extraid ShowModelSelectionMenuEx-ben használunk
modelid- A kiválasztott model id-ja
PéldascriptekA fentebb leírt scriptfiles mappánkba rakjuk be a
planes.txt-t vagy a
skins.txt-t1. Példa - Statikus lista
public OnPlayerCommandText(playerid, cmdtext[])
{
if(strcmp(cmdtext, \"/plane\", true) == 0)
{
ShowModelSelectionMenu(playerid, planelist, \"->Planes<-\");
return 1;
}
if(strcmp(cmdtext, \"/changeskin\", true) == 0)
{
ShowModelSelectionMenu(playerid, skinlist, \"Select Skin\");
return 1;
}
return 0;
}
public OnPlayerModelSelection(playerid, response, listid, modelid)
{
if(listid == planelist)
{
if(response)
{
SendClientMessage(playerid, 0xFF0000FF, \"Plane Spawned\");
new Float:pos[3]; GetPlayerPos(playerid, pos[0], pos[1], pos[2]);
CreateVehicle(modelid, pos[0] + 2.5, pos[1], pos[2] + 2.5, 0.0, random(128), random(128), -1);
}
else SendClientMessage(playerid, 0xFF0000FF, \"Canceled plane selection\");
return 1;
}
if(listid == skinlist)
{
if(response)
{
SendClientMessage(playerid, 0xFF0000FF, \"Skin Changed\");
SetPlayerSkin(playerid, modelid);
}
else SendClientMessage(playerid, 0xFF0000FF, \"Canceled skin selection\");
return 1;
}
return 1;
}
2. Példa - Dinamikus Játékos Lista
#include <a_samp>
#include <mSelection>
#define CUSTOM_TRAILER_MENU 1
public OnPlayerCommandText(playerid, cmdtext[])
{
if(strcmp(cmdtext, \"/selectVehicleTrailer\", true) == 0)
{
new cars[15];
cars[0] = 435;
cars[1] = 450;
cars[2] = 569;
cars[3] = 570;
cars[4] = 584;
cars[5] = 590;
cars[6] = 591;
cars[7] = 606;
cars[8] = 607;
cars[9] = 608;
cars[10] = 610;
cars[11] = 611;
ShowModelSelectionMenuEx(playerid, cars, 12, \"Select trailer\", CUSTOM_TRAILER_MENU, 16.0, 0.0, -55.0);
return 1;
}
return 0;
}
public OnPlayerModelSelectionEx(playerid, response, extraid, modelid)
{
if(extraid == CUSTOM_TRAILER_MENU)
{
if(response)
{
SendClientMessage(playerid, 0xFF0000FF, \"Trailer Spawned\");
new Float:pos[3]; GetPlayerPos(playerid, pos[0], pos[1], pos[2]);
CreateVehicle(modelid, pos[0] + 2.5, pos[1], pos[2] + 2.5, 0.0, random(128), random(128), -1);
}
else SendClientMessage(playerid, 0xFF0000FF, \"Canceled trailer selection\");
}
return 1;
Remélem nem kell a példascriptet lefordítani és érthetõ.
LetöltésRegisztráció nélkül letölthetõ
ITTUtószóRemélem jó helyre nyitottam, ha mégse helyezzétek át. Remélem ennek megírásával sokat segítettem, ugyanis ezt nagyon sok helyre fel lehet használni : pl Inventiory és társai. Kösz, ha valaki vette a türelmet és elolvasta.
Ha fordítási hibákat találtok szóljatok és akkor átírom, de remélem nincs.