Hi,
ich scripte selber noch nicht lange, aber ich probiers mal die das zu erklären.
Über Public_OnGameModInit() kommt:
new noobspawn_info;
new Menu:noobspawn_info_menu;
Es werden 2 Variablen erstellt.
Die erste Variable wird für das Pickup benötigt und die 2. Variable für das Menü.
Das kommt alles unter OnGameModInit():
noobspawn_info = CreatePickup(1239,23,1481.4407,-1742.5592,13.5469);
Hier erstellen wird das Pickup mit CreatPickup
Die Zahl 1239 ist die Id für unser gelbes I
Die Zahl 23 legt den Typ fest, also ob es aufsammelbar sein soll, ob es respawnen soll etc.
Ich habe mich für 23 entschieden, weil es nicht aufsammelbar ist etc. und sonst auch keine evtl. vorhandene EIGENE Funktion ausgeübt wird (nützlich auch bei heal und armor pickup)
Die restlichen Zahlen sind die Koordinaten. (Müssen evtl. an eigene Bedürfnisse angepasst werden)
noobspawn_info_menu = CreateMenu("Starter Packet", 1, 200.0, 100.0, 200.0);
Hier erstellen wir das Menü.
Starter Packet ist der Name für unser Menü
Die nächste Zahl gibt an wie viel Spalten wir haben wollen
Die nächsten 2 Zahlen geben die x und y Coordinate an und bestimmen somit wo das Fenster auf'm Bildschirm ist (Stichwort Koordinatensystem, ab 5. Klasse Mathe Realschule)
Die letzte Zahl gibt die größe der ersten Spalte an, bei mehreren Spalten können da noch mehrere Zahlen folgen.
AddMenuItem(noobspawn_info_menu, 0, "BMX + Baseball Bat = 500$");
Hier fügen wir unserem Menü einen Menüpunkt hinzu.
Der erste wert in der Klammer ist die Variable die wir zuvor erstellt haben und die wir für das Menü genutzt haben
Die nächste Zahl gibt an in welche Spalte der eintrag soll wobei bei null angefangen wird zu zählen, also 0 = 1. Spalte, 1 = 2. Spalte usw.
Der letzte Text ist der Name für den Menüpunkt
AddMenuItem(noobspawn_info_menu, 0, "Faggio + Baseball Bat = 1000$");
Exact das gleiche wie obe nur das natürlich der Name anders ist.
Folgendes kommt unter public OnPlayerPickUpPickup(playerid, pickupid),
weil er das Menü nur zeigen soll wenn jemand durch das Pickup geht.
if(pickupid == noobspawn_info) {
Wenn das Pickup (die Pickupid) gleich unserem Pickup (noobspawn_info) dann mache folgendes:
ShowMenuForPlayer(noobspawn_info_menu,playerid);
}
Zeige dem Spieler das Menü.
Wobei der erste wert wieder unsere Variable ist, die wir für das Menü hergenommen haben
Der zweite wert ist playerid, da setzt der Server später dann automatisch die Id von dem user ein der gerade durch das Pickup läuft
Folgendes kommt unter public OnPlayerSelectedMenuRow(playerid, row)
das spawnen der Vehicles etc. soll nur passieren wenn der User einen bestimmten Menüpunkt wählt.
if(GetPlayerMenu(playerid) == noobspawn_info_menu) {
Wenn das geöffnete Menü unser erstelltes Menü (noobspawn_info_menu) ist, dann mache folgendes:
Wobei GetPlayerMenu abfragt welches Menü der user gerade offen hat.
new
Float:px,
Float:py,
Float:pz,
Float:pa;
Hier werden erstmal 4 Variablen erstellt die wir weiter unten für den x, y, z und den/das angel brauchen.
GetPlayerPos(playerid, px, py, pz);
Hier hollen wir uns die aktuelle Position des Spielers und speicher den x wert in der Variable px, den y wert in der Varibale py und den z wert in der Variable pz.
GetPlayerFacingAngle(playerid, pa);
Hier hollen wir uns die Blickrichtung des Spielers und speichern sie in der Variable pa.
switch(row)
{
case(0): // BMX und Baseballschläger = 500$
{
AddStaticVehicle(481 , px +3, py, pz, pa, 0, 0);
GivePlayerWeapon(playerid, 5, 0);
GivePlayerMoney(playerid, -500);
}
case(1): // Faggio und Baseballschläger = 1000$
{
AddStaticVehicle(462, px +3, py, pz, pa, 0, 0);
GivePlayerWeapon(playerid, 5, 0);
GivePlayerMoney(playerid, -1000);
}
}
}
Beim ersten Punkt wird das bmx gespawnt, der player bekommt einen Baseballschläger und ihm werden 500$ abgezogen
Beim zweiten Punkte wird das bmx gespawnt, der player bekommt wieder einen Baseballschläger und ihm werden 1000$ abgezogen.
Aber das mit switch und case kann bitte jemand anders genauer erklären
Kompletter Code
Big thx an
Breadfishforum
samp wiki