Nuklearna Boma sa Textdraw.


Započeo Plen Ki Mun, Jul 05, 2018, 15:29:34 POSLE PODNE

prethodna tema - sledeća tema

0 članova i 1 gost pregledaju ovu temu.

Problem(error/warning): Koristim sistem nuklearne bombe putem dialoga, ali ja hoću da to uradim putem textdrawa to jest da mijenjam izmeÄ'u baza sa lijevim/desnim textdraw i ispaljivanje bombe, ali ja pojma nemam kako da to napravim, to jest pojma nemam kako da uradim kada stisnem lijevi/desni da mi lista izmeÄ'u baza.

@Ino42O
@Bolex_
@Bašovski


Dio skripte:

Ovo su pozicije kamera za taj textdraw biranje.

1. 2730.4636,-2033.5076,52.0236,135.2458
2. 2431.8169,-1644.3945,56.7583,135.2458

Ovu su lijevi/desni i textdraw za bacit bombu to jest da izaberem tu bazu

new PlayerText:NukeLeftButton[MAX_PLAYERS];
new PlayerText:NukeRightButton[MAX_PLAYERS];
new PlayerText:SelectBase[MAX_PLAYERS];

NukeLeftButton[playerid] = CreatePlayerTextDraw(playerid, 236.000000, 291.812500, "ld_beat:left");
	PlayerTextDrawLetterSize(playerid, NukeLeftButton[playerid], 0.000000, 0.000000);
	PlayerTextDrawTextSize(playerid, NukeLeftButton[playerid], 26.500000, 17.937500);
	PlayerTextDrawAlignment(playerid, NukeLeftButton[playerid], 1);
	PlayerTextDrawColor(playerid, NukeLeftButton[playerid], -1523963137);
	PlayerTextDrawSetShadow(playerid, NukeLeftButton[playerid], 0);
	PlayerTextDrawSetOutline(playerid, NukeLeftButton[playerid], 0);
	PlayerTextDrawFont(playerid, NukeLeftButton[playerid], 4);
	PlayerTextDrawSetSelectable(playerid, NukeLeftButton[playerid], true);

	NukeRightButton[playerid] = CreatePlayerTextDraw(playerid, 362.500000, 293.125000, "ld_beat:right");
	PlayerTextDrawLetterSize(playerid, NukeRightButton[playerid], 0.000000, 0.000000);
	PlayerTextDrawTextSize(playerid, NukeRightButton[playerid], 24.500000, 17.500000);
	PlayerTextDrawAlignment(playerid, NukeRightButton[playerid], 1);
	PlayerTextDrawColor(playerid, NukeRightButton[playerid], -1523963137);
	PlayerTextDrawSetShadow(playerid, NukeRightButton[playerid], 0);
	PlayerTextDrawSetOutline(playerid, NukeRightButton[playerid], 0);
	PlayerTextDrawFont(playerid, NukeRightButton[playerid], 4);
	PlayerTextDrawSetSelectable(playerid, NukeRightButton[playerid], true);

	SelectBase[playerid] = CreatePlayerTextDraw(playerid, 297.000000, 295.312500, "IZABERI");
	PlayerTextDrawLetterSize(playerid, SelectBase[playerid], 0.204999, 1.070625);
	PlayerTextDrawAlignment(playerid, SelectBase[playerid], 1);
	PlayerTextDrawColor(playerid, SelectBase[playerid], -1);
	PlayerTextDrawSetShadow(playerid, SelectBase[playerid], 0);
	PlayerTextDrawSetOutline(playerid, SelectBase[playerid], 1);
	PlayerTextDrawBackgroundColor(playerid, SelectBase[playerid], 51);
	PlayerTextDrawFont(playerid, SelectBase[playerid], 2);
	PlayerTextDrawSetProportional(playerid, SelectBase[playerid], 1);
	PlayerTextDrawSetSelectable(playerid, SelectBase[playerid], true);



A ovo je kod nuklearne bombe sa dialogom.

case DIALOG_NUKE:
		{
		    if(! response) return cmd_nuke(playerid);
		    if(response)
		    {
		        if(!IsPlayerInRangeOfPoint(playerid, 3.0, 283.1531, 475.3052, 30.3334))
				{
					return SCM(playerid, COLOR_ORANGE_RED, "* Nisi na mjestu.");
 				}
				new string[256];


       			if(GetPlayerTeam(playerid) == listitem)
	         	{
	                return SCM(playerid, COLOR_ORANGE_RED, "*Ne mozes bacit bombu na svoju bazu");
		        }

			    if(GetPlayerCash(playerid) < NUKE_COST)
				{
				    return SCM(playerid, COLOR_ORANGE_RED, "** Nemas dovoljno novaca.");
				}

			    GivePlayerCash(playerid, - NUKE_COST);

			    gNuke[NUKE_BASE] = listitem;

		        format(string, sizeof(string), "Nuklearna bomba ce biti bacena na %s.", gTeamBase[gNuke[NUKE_BASE]][b_name]);
		        SCMToAll(COLOR_LIGHTBLUE, string);

		        SetTimerEx("OnPlayerLaunchNuke", (6 * 1000), false, "ii", playerid, gNuke[NUKE_BASE]);
		        gNuke[NUKE_TIME] = NUKE_INTERVAL;
		    }
		}


public OnPlayerLaunchNuke(playerid, baseid)
{
	gNuke[NUKE_BASE] = -1;

	new kills;
	new string[144];
	new Float:pos[3];
	foreach(new i : Player)
	{
		if(	i != playerid &&
  			IsPlayerInGangZone(i, gTeamBase[baseid][b_base]) &&
			GetPlayerTeam(i) != GetPlayerTeam(playerid) &&
			! GetPlayerVirtualWorld(i) &&
			! GetPlayerInterior(i) &&
			IsPlayerSpawned(i) &&
			(GetPlayerTeam(i) < sizeof(TEAM) || GetPlayerTeam(i) == NO_TEAM))
		{
  			GetPlayerPos(i, pos[0], pos[1], pos[2]);
		    CreateExplosion(pos[0] + 2, pos[1], pos[2], 6, 5);
		    CreateExplosion(pos[0] - 2, pos[1], pos[2], 6, 5);

			SetCustomHealth(i, 0.0);

			format(string, sizeof(string), "Ubio si %s(%i) sa nuklearnom bombom", GetName(i), i);
			SCM(playerid, COLOR_ORANGE_RED, string);

			GivePlayerCash(playerid, 115);

			CallLocalFunction("OnPlayerCustomDeath", "iii", i, playerid, 51);

			kills += 1;
		}
	}
	return 1;
}


CMD:nuke(playerid)
{
    if(!IsPlayerInRangeOfPoint(playerid, 3.0, 283.1531, 475.3052, 30.3334))
	{
		return SCM(playerid, COLOR_ORANGE_RED, "* Nisi na mjestu..");
 	}


    new string[256];

    new dialogstr[144];
    for(new i; i < sizeof(gTeamBase); i++)
    {
    	format(string, sizeof(string), "%s\n", gTeamBase[i][b_name]);
    	strcat(dialogstr, string);
    }

	if(GetPlayerDialogID(playerid) != INVALID_DIALOG_ID) return 1;

	return ShowPlayerDialog(playerid, DIALOG_NUKE, DIALOG_STYLE_LIST, "Bomba", dialogstr, "Izaberi", "Zatvori");
}


Ako još nešto treba recite.


Debug iz server_log(ukoliko je u pitanju crashanje servera - crashdetect log): [ code ]//[ /code ]
Slika/video ingame problema(obavezno ako je ingame problem): //
Poslednja Izmena: Jul 10, 2018, 09:37:01 PRE PODNE od Bašovski

stavis da ti na cmd PlayerTextDrawShow(playerid, tdove); pa isto OnPlayerClick.!!!
Vandals Project OGC
[size=11.25pt]Vandals Project OGC[/size][/font]
[/color]

Citat: Skorpija poslato Jul 05, 2018, 19:56:53 POSLE PODNE
stavis da ti na cmd PlayerTextDrawShow(playerid, tdove); pa isto OnPlayerClick.!!!


Bravo kolumbo za to sam i sam znao, čitaj gore Å¡to sam napisao  :D

Jednostavno smjestis u varijablu koju je stranu igrac odabrao. Pisao sam preko mobitela, trebalo bi raditi...
Takodje na connectu igraca postavi vrijednost varijable NuklearkaTD na -1.
new 
    NuklearkaTD[ MAX_PLAYERS ] = { -1, ... };
#define nuke_DESNA 1
#define nuke_LIJEVA 2

public OnPlayerClickPlayerTextDraw( playerid, PlayerText:playertextid ) {
    if( NuklearkaTD[ playerid ] != -1 ) {
        if( playertextid == SelectBase ) {
            if( NuklearkaTD[ playerid ] == nuke_DESNA ) {
                 // ovdje ide kod za aktiviranje desne nuklearke
            }
            else {
                // ovdje ide kod za aktiviranje lijeve nuklearke
            }
        }
        else if( playertextid == NukeLeftButton[ playerid ] ) NuklearkaTD[ playerid ] = nuke_LIJEVA;
        else NuklearkaTD[ playerid ] = nuke_DESNA;
    }
    return (true);
}


bilo je lijepo dok je trajalo.