Hast du Textdraw 0 überhaupt erstellt?
Beiträge von Templer
-
-
CreateVehicle(432, -1447.503662 426.322723 1.308493, 338, 1, 1, -1);
Die Farben kannst du selbst aussuchen, indemfall Weiß und -1 damit das Fahrzeug nie respawnt!
-
Bitte zeilen posten, da ich ned sonderbar weiß wie du alles umbenannt hast
-
Achso ja und ein Lob an die Dampfwalze für seinen schlechten Humor und seine Hilfsbereitschaft
-
8D ich will ned unnötig die Leute damit verwirren Natürlich könnte ich es so scripten damit es sehr gut läuft, aber die sollen ja auch was lernen
-
Zacharis, lösch bitte das return aus der Zeile 373, Danke!
-
Bitte überall diese Zeile
for(new i=0; i<12; i++)
durch das hier ersetzen.
for(new i=0; i<11; i++)
Ein Array zählt ab 0 nicht ab 1.Bei deinem stock sollte man es doch eher so machen
stock GetVehicleName(vehicleid)
{
new model = GetVehicleModel(vehicleid);
return Autonamen[model-400];
}sollte jedoch dennoch passen.. Naja probiers mal aus
-
Wenn du auch Fahrzeuge hinzugefügt hast, siehst du auch diese nur anders definiert..
-
Habs so einfach wie möglich für dich dargestellt:
#include <a_samp>main()
{
print("\n----------------------------------");
print(" ARGE");
print("----------------------------------\n");
}
new Menu:JobMenu;
new Menu:JobMenu2;
new JobPickup;new gChosenJob[MAX_PLAYERS]; //Variable zum speichern der JobID was Spieler ausgewählt hat..
public OnGameModeInit()
{
//ARGE
JobMenu = CreateMenu("JobMenu", 1, 220.0, 350.0, 200.0);
AddMenuItem(JobMenu, 0, "Trucker");
AddMenuItem(JobMenu, 0, "2.Job");
AddMenuItem(JobMenu, 0, "3.Job");
AddMenuItem(JobMenu, 0, "4.Job");
//Neues Menu ^^
JobMenu2 = CreateMenu("JobMenu", 1, 220.0, 350.0, 200.0);
AddMenuItem(JobMenu2, 0, "Job annehmen");
AddMenuItem(JobMenu2, 0, "Job ablehnen");
//
JobPickup = CreatePickup(1239,2,1488.5376,-1770.2936,18.7958,-1); //ARGE-Pickup;
return 1;
}
public OnPlayerPickUpPickup(playerid,pickupid)
{
if(pickupid == JobPickup) ShowMenuForPlayer(JobMenu, playerid);
return 1;
}
public OnPlayerSelectedMenuRow(playerid, row)
{
if(GetPlayerMenu(playerid) == JobMenu2)
{
if(row == 0)
{
ShowMenuForPlayer(JobMenu, playerid);
PlayerInfo[playerid][pJob] = gChosenJob[playerid]; //Die Variable pJob ist aus dem GF ^^ Bedeutet, der ausgewählte job bekommt Spieler zugeteilt!
if(gChosenJob[playerid] == 1) SendClientMessage(playerid, 0xFFFFFF00, "Du hast den Trucker Job angenommen!");
else if(gChosenJob[playerid] == 2) SendClientMessage(playerid, 0xFFFFFF00, "Du hast den 2. Job angenommen!");
else if(gChosenJob[playerid] == 3) SendClientMessage(playerid, 0xFFFFFF00, "Du hast den 3. Job angenommen!");
else if(gChosenJob[playerid] == 4) SendClientMessage(playerid, 0xFFFFFF00, "Du hast den 4. Job angenommen!");
}
else ShowMenuForPlayer(JobMenu, playerid);
}
if(GetPlayerMenu(playerid) == JobMenu)
{
if(row == 0)
{
SendClientMessage(playerid,1,"Info: Bei diesem Job musst du waren Laden und Entladen");
ShowMenuForPlayer(JobMenu2, playerid); //Zeigt das neue Menü für Spieler
gChosenJob[playerid] = 1; //Die JobID vom Truckerjob, indemfall 1 würde ich halt so sagen ^^
}
else if(row == 2)
{
//Wenn er den zweiten Job auswählt (Wenn Vorhanden)..
ShowMenuForPlayer(JobMenu2, playerid); //Zeigt das neue Menü für Spieler
gChosenJob[playerid] = 1; //Die JobID vom 2.Job, indemfall 2
}
else if(row == 3)
{
//Wenn er den dritten Job auswählt (Wenn Vorhanden)..
ShowMenuForPlayer(JobMenu2, playerid); //Zeigt das neue Menü für Spieler
gChosenJob[playerid] = 1; //Die JobID vom 2.Job, indemfall 2
}
else if(row == 4)
{
//Wenn er den vierten Job auswählt (Wenn Vorhanden)..
ShowMenuForPlayer(JobMenu2, playerid); //Zeigt das neue Menü für Spieler
gChosenJob[playerid] = 1; //Die JobID vom 2.Job, indemfall 2
}
}
} -
Hab ich doch gesagt, du musst aus der *.map Datei die X, Y, Z Koords selbst rauskopieren..
-
Naja ich weiß jetzt ned so genau wo das is, aber wenn diese public FUnktion auch bei Leuten aufgerufen wird, die bereits sich registriert haben würde ich es so machen..
ResetPlayerMoney(playerid);
GivePlayerMoney(playerid, PlayerInfo[playerid][pCash]);
IstEingeloggt[playerid] = 1;
if(PlayerInfo[playerid][pTutorial] == 0)
{
gTutorialTimer[playerid] = SetTimerEx("Tutorial", 15000, 0, playerid); //Jede Sekunde erscheint ein neuer Text!
SendClientMessage(playerid,weiß,"Erfolgreich eingeloggt");
}new string3[128];
format(string3,sizeof(string3),"Spieler %s hat sich eingeloggt",playername);//Dort wo das Tut Message endet, also bei default: das rein
PlayerInfo[playerid][pTutorial] = 1;
//Und bei OnPlayerConnect zu den anderen Variablen das einfügen:
PlayerInfo[playerid][pTutorial] = 0; //Damit neue Spieler die Standart Werte kriegen
//Den die richtigen Werte werden ja dann von der Spielerdatei übernommen, wenn du es
//so programmiert hast ^^ -
Im MTA platzierst du die Fahrzeuge und in der Map File muss du einzeln die Pos auskopieren, da ich derzeit keinen MTA VehicleConverter kenne (meines Wissens her!)
-
So bitte, hab mir mal alles durchgelesen.. Scheiß Arbeit das sag ich dir
Alle Änderungen wurden mit // kommentiert!
public OnPlayerStateChange(playerid, newstate, oldstate)
{
if(newstate == PLAYER_STATE_DRIVER || newstate == PLAYER_STATE_PASSENGER) //Auch für Passagiere!
{
for(new i=0; i<12; i++) //Aus irgendeinem Grund übernimmt er es nie richtig! Weitere Fragen folgen unten!
{
TextDrawShowForPlayer(playerid,Textdraw[i]);
}[...]
}
if(newstate == PLAYER_STATE_ONFOOT) //Sicher ist sicher..
{
new i=0;
for(; i<12; i++)
{
TextDrawHideForPlayer(playerid,Textdraw[i]);
}
TextDrawDestroy(Autoname[playerid]);
TextDrawDestroy(Speed1[playerid]);
TextDrawDestroy(Speed2[playerid]);
TextDrawDestroy(Tankinhalt[playerid]);
TextDrawDestroy(Kilometer[playerid]);
}
return 1;
}public AmaturenUpdate()
{
new i = 0; //Eher unwichtig ^^
for(; i<MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if(IsPlayerInAnyVehicle(i)) //Nicht 'GetPlayerState(i) == PLAYER_STATE_DRIVER' da du es Spielerbezogen machst
{
TextDrawDestroy(Autoname[i]);
TextDrawDestroy(Speed1[i]);
TextDrawDestroy(Speed2[i]);
TextDrawDestroy(Tankinhalt[i]);
TextDrawDestroy(Kilometer[i]);
new output[64], Float:kommazahl;
//print("test1")
//Autoname
format(output,sizeof(output),"%s",GetVehicleName(GetPlayerVehicleID(i)));
//Für GetVehicleName wird AddStaticVehicle2 vorrausgesetzt siehe hier: http://wiki.sa-mp.com/wiki/Useful_Functions#GetVehicleName[...]
//print("test2")
//Speed
format(output,sizeof(output),"%d km/h",ErmittleGeschwindigkeit(i,true));[...]
//Speedbalken
kommazahl=524+ErmittleGeschwindigkeit(i,true)/3.06122;[...]
//Tankzeiger
kommazahl=524+Tankmenge[GetPlayerVehicleID(i)]/1.020408;[...]
//Kilometer
kilometercount[GetPlayerVehicleID(i)] += ErmittleGeschwindigkeit(i,true)/(60*60*0.5);
format(output,sizeof(output),"%.1f km",kilometercount[GetPlayerVehicleID(i)]);[...]
TextDrawShowForPlayer(i,Autoname[i]);
TextDrawShowForPlayer(i,Speed1[i]);
TextDrawShowForPlayer(i,Speed2[i]);
TextDrawShowForPlayer(i,Tankinhalt[i]);
TextDrawShowForPlayer(i,Kilometer[i]);
}
}
}Also meine Frage, zeig mir die new Definition von Textdraw !
-
for(new i = 0;i<MAX_VEHICLES;i++)
{
if(strlen(Blub[i]))
{
format(string, sizeof(string), "%s Blub %s\n",Blub[i],Blub[i]);
ShowPlayerDialog(playerid,DIALOG_KENNZEICHENNN,DIALOG_STYLE_LIST,"Blub",string,"weiter","abbrechen");
}
} -
Passtz genau, dort einfügen und deine Tutorial Abfrage auch einfügen, denn wieso sollte einer, der das Tut gesehen hat, nochmal sehen ohne jeden Grund
-
Du siehst das bei dem Befehl er gestartet wird. Also fügst du dann einfach die folgenden Zeilen dort ein, wo du es gestartet haben willst:
ggebetCount[playerid] = 1;
ggebetTimer[playerid] = SetTimerEx("gebet", 1000, 1, "d", playerid); //Jede Sekunde erscheint ein neuer Text! -
Wow, dass kopierst noch schöner ins Tutorial Forum du wirst beliebt xD
-
Achja genau, dass hier fehlt..
unter default:
KillTimer(gWerbungTimer[playerid]);
-
Versteh dich nicht..
-
Ne am besten so:
public OnPlayerCommandText(playerid, cmdtext[])
{
dcmd(text, strlen("text"), cmdtext);
return 0;
}
dcmd_text(playerid, params[])
{
if(!IsPlayerConnected(playerid)) return 1;
new zielid, string[128];
if(sscanf(params, "u", zielid)) return SendClientMessage(playerid, 0xFFFFFF00, "VERWENDUNG: /text [Spieler ID/Name]");
if(!IsPlayerConnected(zielid)) return SendClientMessage(playerid, 0xFFFFFF00, "Ungültige SpielerID!");
if(gWerbungCount[zielid] != 0) return SendClientMessage(playerid, 0xFFFFFF00, "Spieler liest bereits Text!");
gWerbungCount[zielid] = 1;
gWerbungTimer[zielid] = SetTimerEx("Werbung", 1000, 1, "d", zielid); //Jede Sekunde erscheint ein neuer Text!
format(string, sizeof(string), "Du zeigst den Text für SpielerID %d!", zielid);
return SendClientMessage(playerid, 0xFFFFFF00, string");
}Sollte dann stehen "undefined dcmd" oder sowas, dann das gaanz oben ins Script einfügen:
#define dcmd(%1,%2,%3) if (!strcmp((%3)[1], #%1, true, (%2)) && ((((%3)[(%2) + 1] == '\0') && (dcmd_%1(playerid, ""))) || (((%3)[(%2) + 1] == ' ') && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1
Sollte ansonsten "undefined sscanf" oder sowas stehen, dann bitte auf folgenden Link gehen und den ganzen stock-Code in dein Script oben einfügen:
http://wiki.sa-mp.com/wiki/Sscanf