[HELP] Making a vehicle spawning menu
#1

WARNING: COMPLETE SCRIPTING NOOB

So basically, I'm trying to make a menu that will spawn a vehicle there are 7 choices.
I've pretty much made it all already, but for some reason the compiling just screws up.
I partially followed the tutorial on the SAMP wiki, but that doesn't seem right.

Here's the code:
Код:
new Menu:carspawnmenu;
if (CurrentMenu == carspawnmenu)
{
	switch(row)
	{
	    case 0: //Clover
	    {
	        CreateVehicle(542, 2816.1345, -2438.1392, 12.5097, 90.0000, -1, -1, 0);
		}
		case 1: //Picador
		{
		    CreateVehicle(600, 2816.1345, -2438.1392, 12.5097, 90.0000, -1, -1, 0);
		}
		case 2: //Manana
		{
		    CreateVehicle(410, 2816.1345, -2438.1392, 12.5097, 90.0000, -1, -1, 0);
		}
		case 3: //Tampa
		{
		    CreateVehicle(549, 2816.1345, -2438.1392, 12.5097, 90.0000, -1, -1, 0);
		}
		case 4: //Walton
		{
		    CreateVehicle(478, 2816.1345, -2438.1392, 12.5097, 90.0000, -1, -1, 0);
		}
		case 5: //Glendale Shit
		{
		    CreateVehicle(604, 2816.1345, -2438.1392, 12.5097, 90.0000, -1, -1, 0);
		}
		case 6: //Majestic
		{
		    CreateVehicle(517, 2816.1345, -2438.1392, 12.5097, 90.0000, -1, -1, 0);
		}
	}
}

public OnGameModeInit()
{
	carspawnmenu = CreateMenu("Carspawnmenu", 1, 200.0, 100.0, 150.0, 150.0);
	AddMenuItem(carspawnmenu, 0, "Clover");
	AddMenuItem(carspawnmenu, 0, "Picador");
	AddMenuItem(carspawnmenu, 0, "Manana");
	AddMenuItem(carspawnmenu, 0, "Tampa");
	AddMenuItem(carspawnmenu, 0, "Walton");
	AddMenuItem(carspawnmenu, 0, "Glendale");
	AddMenuItem(carspawnmenu, 0, "Majestic");
	return 1;
}

public OnPlayerSpawn(playerid)
{
	ShowMenuForPlayer(carspawnmenu, playerid);
	return 1;
}
Thank you in advance if you can help in any way.
Reply
#2

First off this,
pawn Код:
if (CurrentMenu == carspawnmenu)
{
    switch(row)
    {
        case 0: //Clover
        {
            CreateVehicle(542, 2816.1345, -2438.1392, 12.5097, 90.0000, -1, -1, 0);
        }
        case 1: //Picador
        {
            CreateVehicle(600, 2816.1345, -2438.1392, 12.5097, 90.0000, -1, -1, 0);
        }
        case 2: //Manana
        {
            CreateVehicle(410, 2816.1345, -2438.1392, 12.5097, 90.0000, -1, -1, 0);
        }
        case 3: //Tampa
        {
            CreateVehicle(549, 2816.1345, -2438.1392, 12.5097, 90.0000, -1, -1, 0);
        }
        case 4: //Walton
        {
            CreateVehicle(478, 2816.1345, -2438.1392, 12.5097, 90.0000, -1, -1, 0);
        }
        case 5: //Glendale Shit
        {
            CreateVehicle(604, 2816.1345, -2438.1392, 12.5097, 90.0000, -1, -1, 0);
        }
        case 6: //Majestic
        {
            CreateVehicle(517, 2816.1345, -2438.1392, 12.5097, 90.0000, -1, -1, 0);
        }
    }
}
should be under public OnPlayerSelectedMenuRow(playerid, row), not at the top of your script. Secondly you have defined carspawnmenu twice at the top of your script, this should only be defined once.

Hope this helps.
Reply
#3

Thank you very much, I'm still very new to scripting so any pointers are appreciated.

EDIT: Alright, so that got rid of a lot of problems.
Now, I still have this error message: "(225) : error 017: undefined symbol "CurrentMenu""
The line is: " if (CurrentMenu == carspawnmenu)"
Reply
#4

put this:
pawn Код:
new Menu:CurrentMenu = GetPlayerMenu(playerid);
just above this line:
pawn Код:
if (CurrentMenu == carspawnmenu)
Reply
#5

Quote:
Originally Posted by [jS]Thomas
Посмотреть сообщение
put this:
pawn Код:
new Menu:CurrentMenu = GetPlayerMenu(playerid);
just above this line:
pawn Код:
if (CurrentMenu == carspawnmenu)
Whenever I insert the
pawn Код:
if (CurrentMenu == carspawnmenu)
line the converter crashes.
Reply
#6

Alright, I keep trying different things and keep running into different problems.
Before, I tried to just run what I already had with ShowMenuForPlayer, compiling went fine but the server just kept shutting itself down, there wasn't even anything notable in the logs, it just shut down.

Now, I tried flinging the script into "public OnPlayerSpawn" because that's where I want it, because the vehicles are set to spawn in that area and I want the menu to only open once per game session.

pawn Код:
public OnPlayerSpawn(playerid)
{
    ShowMenuForPlayer(carspawnmenu, playerid);
    {
        switch(row)
        {
            case 0: //Clover
            {
                CreateVehicle(542, 2816.1345, -2438.1392, 12.5097, 90.0000, -1, -1, 0);
            }
            case 1: //Picador
            {
                CreateVehicle(600, 2816.1345, -2438.1392, 12.5097, 90.0000, -1, -1, 0);
            }
            case 2: //Manana
            {
                CreateVehicle(410, 2816.1345, -2438.1392, 12.5097, 90.0000, -1, -1, 0);
            }
            case 3: //Tampa
            {
                CreateVehicle(549, 2816.1345, -2438.1392, 12.5097, 90.0000, -1, -1, 0);
            }
            case 4: //Walton
            {
                CreateVehicle(478, 2816.1345, -2438.1392, 12.5097, 90.0000, -1, -1, 0);
            }
            case 5: //Glendale Shit
            {
                CreateVehicle(604, 2816.1345, -2438.1392, 12.5097, 90.0000, -1, -1, 0);
            }
            case 6: //Majestic
            {
                CreateVehicle(517, 2816.1345, -2438.1392, 12.5097, 90.0000, -1, -1, 0);
            }
        }
    }
    return 1;
}
Reply
#7

Okay, I think I have somewhat of an idea what I'm doing now, I threw the script back in OnPlayerSelectedMenuRow where it belongs, but replaced the opening line with ShowMenuForPlayer which I think is not the right line to use here. The If (CurrentMenu == carspawnmenu) line crashes my converter, so that's impossible to use.

Any ideas?
Reply
#8

Op, try this
pawn Код:
public OnPlayerSpawn(playerid) {
    ShowMenuForPlayer(carspawnmenu, playerid);     
    //Otherstuff
}
public OnPlayerSelectedMenuRow(playerid, row) {
    new Menu:CurrentMenu = GetPlayerMenu(playerid);
    if(CurrentMenu == carspawnmenu)
    {
        new cid = 0;
        switch(row)
        {
            case 0: cid = 542;
            case 1: cid = 600;
            case 2: cid = 410;
            case 3: cid = 549;
            case 4: cid = 478;
            case 5: cid = 604;
            case 6: cid = 517;
        }
        CreateVehicle(cid, 2816.1345, -2438.1392, 12.5097, 90.0000, -1, -1, 0);
    }
   
}
(make sure you have globabl carspawnmenu variable)
Reply
#9

Quote:
Originally Posted by Misiur
Посмотреть сообщение
Op, try this
pawn Код:
public OnPlayerSpawn(playerid) {
    ShowMenuForPlayer(carspawnmenu, playerid);     
    //Otherstuff
}
public OnPlayerSelectedMenuRow(playerid, row) {
    new Menu:CurrentMenu = GetPlayerMenu(playerid);
    if(CurrentMenu == carspawnmenu)
    {
        new cid = 0;
        switch(row)
        {
            case 0: cid = 542;
            case 1: cid = 600;
            case 2: cid = 410;
            case 3: cid = 549;
            case 4: cid = 478;
            case 5: cid = 604;
            case 6: cid = 517;
        }
        CreateVehicle(cid, 2816.1345, -2438.1392, 12.5097, 90.0000, -1, -1, 0);
    }
   
}
(make sure you have globabl carspawnmenu variable)
Waow, just when I thought I figured it out :P

I currently have this:
pawn Код:
public OnPlayerSelectedMenuRow(playerid, row)
{
    if (GetPlayerMenu(playerid) == carspawnmenu)
    {
        switch(row)
        {
            case 0: //Clover
            {
                CreateVehicle(542, 2816.1345, -2438.1392, 12.5097, 90.0000, -1, -1, 0);
            }
            case 1: //Picador
            {
                CreateVehicle(600, 2816.1345, -2438.1392, 12.5097, 90.0000, -1, -1, 0);
            }
            case 2: //Manana
            {
                CreateVehicle(410, 2816.1345, -2438.1392, 12.5097, 90.0000, -1, -1, 0);
            }
            case 3: //Tampa
            {
                CreateVehicle(549, 2816.1345, -2438.1392, 12.5097, 90.0000, -1, -1, 0);
            }
            case 4: //Walton
            {
                CreateVehicle(478, 2816.1345, -2438.1392, 12.5097, 90.0000, -1, -1, 0);
            }
            case 5: //Glendale Shit
            {
                CreateVehicle(604, 2816.1345, -2438.1392, 12.5097, 90.0000, -1, -1, 0);
            }
            case 6: //Majestic
            {
                CreateVehicle(517, 2816.1345, -2438.1392, 12.5097, 90.0000, -1, -1, 0);
            }
        }
    }
    return 1;
}
And now all I need is a trigger, I think.
Reply
#10

Alright, now everything is fixed, the script is good and the trigger is in place, I compiled everything.
But when I try to run samp-server.exe to test it, the server shuts itself down within a second.

Here are the logs:
Код:
----------
Loaded log file: "server_log.txt".
----------

SA-MP Dedicated Server
----------------------
v0.3e-R2, ©2005-2012 SA-MP Team

[12:20:56] 
[12:20:56] Server Plugins
[12:20:56] --------------
[12:20:56]  Loaded 0 plugins.

[12:20:56] 
[12:20:56] Filterscripts
[12:20:56] ---------------
[12:20:56]   Loading filterscript 'gl_actions.amx'...
[12:20:56]   Loading filterscript 'gl_property.amx'...
[12:20:56] 
-----------------------------------
[12:20:56] Grand Larceny Property Filterscript		
[12:20:56] -----------------------------------

[12:20:56]   Loading filterscript 'gl_realtime.amx'...
[12:20:57]   Loading filterscript 'gl_mapicon.amx'...
[12:20:57]   Loading filterscript 'ls_elevator.amx'...
[12:20:57]   Loading filterscript 'test_cmds.amx'...
[12:20:57]   Loading filterscript 'ls_mall.amx'...
[12:20:57]   Loading filterscript 'attachments.amx'...
[12:20:57]   Loaded 8 filterscripts.
Any idea what could be wrong?

EDIT: Tried it after inserting your version of the script, still crashed.
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)