Jelentkezz be, hogy követhesd  
Követő(k) 0
SnooP

[Include]mSelection - Avagy 0.3x Model nézet pár sorból

12 hozzászólás ebben a témában

mSelection

Bevezetõ és frissítései

Haszna

Ezzel 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 OnPlayerModelSelectionben

Függvényei és eljárásai

Az ö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ézete

Mindenek 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

colorPreview.png


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éldascriptek

A fentebb leírt scriptfiles mappánkba rakjuk be a planes.txt-t vagy a skins.txt-t

1. 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és

Regisztráció nélkül letölthetõ ITT

Utó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.

8 emberek kedveli ezt

Megosztás


Megosztás link alapján
Megosztás egy közösségi oldalon

Kocsikat lehet módolni pl infernusra egy BMW-t?

Ez nem módoló. Ez arra szolgál, hogy jármûvek, objectek, fegyverek képei be legyenek szúrva, mint MTA-n az Inventory rendszerek csak itt nem cserélgetheted a képet.

Megosztás


Megosztás link alapján
Megosztás egy közösségi oldalon

Kösz ;) Szerintem RolePlay szerverben ideális egy Inventoryra csak egy tipp. ;)

Megosztás


Megosztás link alapján
Megosztás egy közösségi oldalon

Skin ID 0-tol 299 -ig terjed, jármûvek 400-tol 611-ig ;)

1 személy kedveli ezt

Megosztás


Megosztás link alapján
Megosztás egy közösségi oldalon
Vendég
A téma le van zárva, így nem szólhatsz hozzá!
Jelentkezz be, hogy követhesd  
Követő(k) 0