Das kommt zwar selten mal vor, aber ich finde es wirklich toll.
Meiner Meinung nach zwar auch keine neue Idee, aber mein
ein abwechslungsreiches Update der Standardkarte und kein
jedweiliger Mist.
Brotpunkte: 9 / 10
Das kommt zwar selten mal vor, aber ich finde es wirklich toll.
Meiner Meinung nach zwar auch keine neue Idee, aber mein
ein abwechslungsreiches Update der Standardkarte und kein
jedweiliger Mist.
Brotpunkte: 9 / 10
Da war jemand schneller...
MotorTimer = SetTimerEx("MotorSchaden", 5000, true, "ud", playerid, vehicleid);
public MotorSchaden(playerid, vehicleid)
{
new Float:vHealth;
GetVehicleHealth(vehicleid, vHealth);
if(vHealth > 200)
{
Motor[vehicleid] = false;
MotorSchadenA[vehicleid] = 1;
KillTimer(MotorTimer);
}
return 1;
}
Meinste das so?
Ob du nun fünf Variablen erstellst, ein Array oder die
gekauften Fahrzeug einfach in einer Variable speicherst,
ist dir selbst überlassen.
Da du die Fahrzeug ID für den Spieler aber speichern
musst, um ihn seine Fahrzeuge zuweisen zu könnnen,
empfiehlt sich weiterhin das Array. Das muss dann natürlich
in der Datenbank oder sonst wo gesichert werden.
Um die Spieler auf der Karte unsichtbar erscheinen zu lassen,
kannst du folgende Funktion benutzen: SetPlayerMarkerForPlayer
Die Textfarbe und Namensfarbe kannst du dann innerhalb der
Funktion OnPlayerText verändern und natürlich selbst festlegen.
---
Möchtest du, dass dein Name auch bunt im TAB Menü angezeigt wird,
solltest du, wie mein Vorgänger postete, die Funktion SetPlayerColor nutzen.
?
Du erstellst also so viele Carkey Variablen wie du Fahrzeuge
besitzen möchest und speicherst dort die Fahrzeug IDs, die
der Spieler besitzt.
Der Einfachheit halber könntest du auch ein Array erstellen.
Du speicherst deine Schlüssel einfach in den Carkey Variablen.
Sind alle voll (die findest du durch eine Anweisung heraus),
kann der Spieler einfach keine mehr kaufen. Und ist noch
ein Schlüssel unbesetzt, kann er eben eins kaufen.
Denkbar simpel
Ich nutze das Forum die gesamte Zeit über,
schreibe ununterbrochen Beiträge und irre
so durch die verschiedenen Bereiche.
Ich habe keine Probleme, zur keiner Zeit!
Eure Probleme erscheinen mir etwas seltsam.
und bekomme seit dem diese Errors
Würdest du uns diese Zeile mal bitte schicken,
inklusive 10 Zeilen davor und danach?
Dann und nur dann, können wir dir helfen.
Bitte fass dir mal an die Nase und überdenke deinen code
Uhhh...
Da habe ich ja mal gar nicht hingeschaut.
Natürlich hast du Recht und ich habe mächtig "getrieft".
if(strcmp(cmd, "/anhan", true) == 0)
{
var = strtok(cmdtext, idx);
if(!strlen(var)) return SendClientMessage(playerid, -1, "[BENUTZE] /anhan [vehicleID]");
if(PlayerInfo[playerid][pAdmin] == 3)
{
if(IsPlayerInAnyVehicle(playerid))
{
if(strval(var) != INVALID_VEHICLE_ID)
{
AttachTrailerToVehicle(strval(var), GetPlayerVehicleID(playerid));
SendClientMessage(playerid, -1, "Das Fahrzeug wurde angehängt.");
return 1;
}
}
}
}
Du verwendest die Funktion GetPlayerInterior und nutzt
diese in einer Anweisung, um herauszufinden in welchem
Interior sich der Spieler befindet.
Dann spielst du die Musik einfach ab...
if(GetPlayerInterior(playerid) == 1234)
{
new Float:X, Float:Y, Float:Z;
GetPlayerPos(playerid, X, Y, Z);
PlayerPlaySound(playerid, 1234, X, Y, Z);
}
Du musst dir den Codeschnippsel natürlich anpassen.
Die einfachere und richtig Lösung folgt unten.
Noch ein Tipp:
Wir helfen dir aus eigenen Interesse und nicht aus
der Tatsache, dass du meinst, wir dir helfen zu müssen.
Und niemand ist dazu da, sich um deine Dinge kümmern zu müssen.
if(strcmp(cmd, "/anhan", true) == 0)
{
var = strtok(cmdtext, idx);
if(!strlen(var)) return SendClientMessage(playerid, -1, "[BENUTZE] /anhan [vehicleID]");
if(PlayerInfo[playerid][pAdmin] == 3)
{
if(IsPlayerInAnyVehicle(playerid))
{
if(strval(var) != INVALID_VEHICLE_ID)
{
for(new c = 0; c < MAX_VEHICLES; c++)
{
AttachTrailerToVehicle(strval(var), GetPlayerVehicleID(playerid));
}
SendClientMessage(playerid, -1, "Das Fahrzeug wurde angehängt.");
return 1;
}
}
}
}
Sag mal genauer wie meinst du das ?
Ich weiss nicht wie du es meinst.
Das ist doch mehr als deutlich verständlich oder nicht?
Der Admin, der sich in einem Fahrzeug besitzen muss,
möchte ein anderes Fahrzeug abschleppen, mit Hilfe
der neuen Funktion AttachTrailerToVehicle.
Du solltest vielleicht eine Anweisung einbauen, die überprüft,
ob der Admin in einem Fahrzeug ist und in Reichweite des Fahrzeugs,
dessen ID du ebenfalls als Parameter mit einfließen lassen solltest.
Konkret: /anhan [vehicle ID]
Die Funktion funktioniert exakt so, wie ich sie dir geschrieben habe.
Ggf. musst du den String var anpassen, den es vielleicht nicht gibt.
if(strcmp(cmd, "/me", true) == 0)
{
var = strtok(cmdtext, idx);
if(!strlen(var)) return SendClientMessage(playerid, 0xFF0000FF, "[BENUTZE] /me [Text]");
new plName[MAX_PLAYERS_NAME], string[125], Float:posX, Float:posY, Float:posZ;
GetPlayerName(playerid, plName, sizeof(plName));
format(string, sizeof(string), "* %s %s", plName, var);
GetPlayerPos(playerid, posX, posY, posZ);
ForAllPlayers(i) if(IsPlayerInRangeOfPoint(i, 50, posX, posY, poZ)) SendClientMessage(i, 0xFFFF00AA, string);
return 1;
}
In der Spielervariable Auto1 speicherst du ja für gewöhnlich
die ID des Fahrzeugs, die es im Spiel hat. Also kannst du diese
auch einfach wieder aufrufen.
Um festzustellen ob es die gleiche ID ist, wie diese in welchem
Fahrzeug du gerade sitzt, nutzt du einfach folgende Anweisung.
if(GetPlayerVehicleID(playerid) == GetPVarInt(playerid, "Auto1"))
// überprüft ob die Fahrzeug ID gleich der gespeicherten ist
Bitte schön...
public OnPlayerCommandText(playerid, cmdtext[])
{
new cmd[20], var[20], idx = 0;
cmd = strtok(cmdtext, idx);
if(strcmp(cmd, "/me", true) == 0)
{
var = strtok(cmdtext, idx);
if(!strlen(var)) return SendClientMessage(playerid, 0xFF0000FF, "[BENUTZE] /me [Text]");
new plName[MAX_PLAYERS_NAME], string[125], Float:posX, Float:posY, Float:posZ;
GetPlayerName(playerid, plName, sizeof(plName));
format(string, sizeof(string), "* %s %s", plName, var);
GetPlayerPos(playerid, posX, posY, posZ);
ForAllPlayers(i) if(IsPlayerInRangeOfPoint(i, 50, posX, posY, poZ)) SendClientMessage(i, 0xFFFF00AA, string);
return 1;
}
}
Du solltest du einfach einfügen können.
Beachte aber, dass du nur das Kommando kopieren musst, nicht die gesamte Funktion.
Jesus, unser Herr, hat mit allen Dingen etwas zu tun, mein Lieber.
Ganz recht, heute vor vielen Jahren ist unser Herr, Jesus Christus, am Kreuz gestorben. Deshalb ist dies heute ein stiller Trauertag.
Mal Spaß aus und vor...
Ist das wirklich ein verzweifelter Versuch die 24380 Nutzer hier zu bekehren?
Falls dem so ist, solltest du wissen, dass Chuck Norris dieses Forum gegründet
hat und Gott, Chuck Norris einen Gefallen schuldig ist, für die Erfindung Satans.
Mal ehrlich...
Es tut mir leid! Lasst solchen Firlefanz bitte sein