Beiträge von Kaliber
-
-
//Bei OnPlayerCommand
if(strcmp("/spawnsave",cmdtext,true,10)==0)
{
new Float:x,Float:y,Float:z;
GetPlayerPos(playerid,x,y,z);
mysql_SetFloat("accounts", "Spawnx", Float:x, "Name", SpielerInfo[playerid][pName]);
mysql_SetFloat("accounts", "Spawny", Float:y, "Name", SpielerInfo[playerid][pName]);
mysql_SetFloat("accounts", "Spawnz", Float:z, "Name", SpielerInfo[playerid][pName]);
SendClientMessage(playerid,hellgruen,"[Server]: Du spawnst absofort immer hier!");
return 1;
}
Da liegt der Fehler, schreibe es so:
//Bei OnPlayerCommand
if(strcmp("/spawnsave",cmdtext,true,10)==0)
{
new Float:x,Float:y,Float:z;
GetPlayerPos(playerid,x,y,z);
mysql_SetFloat("accounts", "Spawnx",x, "Name", SpielerInfo[playerid][pName]);
mysql_SetFloat("accounts", "Spawny",y, "Name", SpielerInfo[playerid][pName]);
mysql_SetFloat("accounts", "Spawnz",z, "Name", SpielerInfo[playerid][pName]);
SendClientMessage(playerid,hellgruen,"[Server]: Du spawnst absofort immer hier!");
return 1;
}mfg.
-
What the fuck? Wie setzt du denn bitteschön die Klammern?!
Wenn nach einer if Abfrage nur ein Statement/Befehl kommt, braucht man keine Klammern.
Braucht man nicht, kann man aber trotzdem setzen um den "Script-Anfängern" zu verdeutlichen, dass das da ne Abfrage ist und vielleicht will er da nochwas einfügen, was weiß ichmfg.
-
Dann machen wir mal das mit der Munition
Nicht ganz korrekt, so ist es richtig:if(newkeys == KEY_FIRE)
{
new vid = GetPlayerVehicleID(playerid);
if(GetVehicleModel(vid) == 432 && GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
{
if(Munition[vid] == 0) return 0;
Munition[vid] -= 1;
new str[64];
format(str, 64,"%d/100 Munition",Munition[vid]);
TextDrawSetString(PanzerMuntion[playerid],str);
return 1;
}
}Konnte man die Taste nicht irgendwie sperren?
Probiere es doch mal mit return 0;Wenn das nicht geht, kannst du dich ja an [GP]Master wenden, der das ja anscheinend in seinem Script hat
mfg.
-
Du musst es so schreiben:
ShowPlayerDialog(playerid,1,DIALOG_STYLE_LIST,"Menü","Wein\nBier\nSchnaps","Kaufen","Abbrechen");
mfg.
-
Warum sollte er dafür einen unnötigen Timer laufen, wenn er die Zahl einfach im OnPlayerKeyStateChange erneuern kann, sobald der Panzer geschossen hat/schießt
Noch besser, daran habe ich gar nicht gedachtWie sieht das nur der, der im Panzer sitzt?
CreatePlayerTextDraw
und dann halt einfach mit der Show Funktion sobald man im Panzer sitzt dem Spieler anzeigen lassenDieses Feature ist aufjedenfall möglich.
Dies habe ich schon in der 0.3c Version auf einem Server entdeckt.Cooles Feature!
MfG
Wärst du so freundlich uns mal den Abschnitt aus deinem Script zu posten ?mfg.
-
ich denk ma
aktuelle muni/Maxmuni
oder so
Ja, du denkst, vielleicht will er auch die Maximale Anzahl an Panzern auf dem Server anzeigen lassen, man weiß es nichtIch will das man die Munition irgendwie sieht,
sry war etwas ungenau
@Saiwn okay, gut gedachtSo:
new str[64];
format(str, 64,"%d/100 Munition",munition[playerid]);
TextDrawSetString(DeinTextDrawName,str);
Das musst du in einen Callback schreiben, den du mit einem Timer aufrufen lässtmfg.
-
Noch eine Frage wie kann ich das mit einem Textdraw ausgeben
habe noch so meine Probleme mit Textdraws...
Was willst du denn mit dem TextDraw Anzeigen lassen -
Mhm, ja dann schreibe es mal nur so:
forward Timer(playerid);
public Timer(playerid)
{
new PlayerText3D:playertextid;
for(new i; i<100; i++)
{
if(GetPlayerWantedLevel(i) == 0) continue;
DeletePlayer3DTextLabel(playerid, playertextid);
new Float:X, Float:Y, Float:Z;
GetPlayerPos(i, X, Y, Z);
new str[128];
format(str, 128,"Dieser Spieler hat %d Wanteds !",GetPlayerWantedLevel(i));
playertextid = CreatePlayer3DTextLabel(playerid,str,0x008080FF,X,Y,Z+2,40.0);
}
return 1;
}mfg.
-
Könntest mal sowas probieren:
//oben im Script
new munition[MAX_PLAYERS];//Halt dem Spieler irgentwo munition geben
//unter OnPlayerKeyStateChange
if(newkeys == KEY_FIRE)
{
if(GetVehicleModel(GetPlayerVehicleID(playerid)) == 432 && GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
{
if(munition[playerid] == 0) return 0;
munition[playerid] -= 1;
return 1;
}
}Bin mir nur nicht sicher, ob das mit dem return 0; funktioniert, könnte aber klappen
Wenn nicht, kannste ja auch machen, dass er aus dem Fahrzeug geschmissen wird oder so...mfg.
-
[if(playertextid >= 0) { DeletePlayer3DTextLabel(playerid, playertextid); }
GetPlayerPos(i, X, Y, Z+2);
Oh, ja ups, probiere es mal so:forward Timer(playerid);
public Timer(playerid)
{
new PlayerText3D:playertextid;
for(new i; i<100; i++)
{
if(GetPlayerWantedLevel(i) == 0) continue;
if(strlen(playertextid) > 0) { DeletePlayer3DTextLabel(playerid, playertextid); }
new Float:X, Float:Y, Float:Z;
GetPlayerPos(i, X, Y, Z);
new str[128];
format(str, 128,"Dieser Spieler hat %d Wanteds !",GetPlayerWantedLevel(i));
playertextid = CreatePlayer3DTextLabel(playerid,str,0x008080FF,X,Y,Z+2,40.0);
}
return 1;
}mfg.
-
Wenn du mir noch die Zeile verraten würdest
-
mach die sendclientmessage doch bei OnPlayerConnect da ist der Fehler behobn
mfG NExiz
Wurde doch schon gemacht
OnGameModeInit()
hat keine Parameter.
Sehr gut erkannt und gesagt, @Threadersteller deshalb kommt die Fehlermeldung, weil der Parameter "playerid" nicht übergeben wirdDarfst du nicht unter OnGameModeInit einfügen,
da dies für Einstellungen des Script dienst, bzw
für Sachen die nicht für einzehlne Spieler gedacht sind.
(Weiß nicht wie man es ausdrücken soll)
OnGameModeInit ist ein Callback der dann ausgeführt wird, sobald man den Server startet unabhängig davon, was man da rein schreibtFTW = For the Win
Kann es heißen, es kann aber auch Fuck The World heißenmfg.
-
Kaliber
habe es jetzt so
Wieso vertauschst du immer bei meinen Codes die ZeilenIch mache das mit Absicht so
Also nimm nochmal genau meinen Code, denn so wie du das hast, erscheint nichtmal ein 3DTextLabel !
mfg.
-
Schreibe es so:
/*932*/if(strcmp(cmdtext, "/tanken", true) == 0)
/*933*/ {
/*934*/ if(GetVehicleState(playerid) != PLAYER_STATE_DRIVER) return SendClientMessage(playerid,COLOR_RED,"Du bist in keinem Fahrzeug (oder kein Fahrer).");
/*935*/ new car = GetPlayerVehicleID(playerid);
/*936*/ if(TanktGerade[car]) return SendClientMessage(playerid,COLOR_GREY,"Du tankst schon!");
/*937*/ if(Motor[car] == true) return SendClientMessage(playerid,COLOR_GREY,"Du musst vor dem Tanken den Motor ausschalten.");
/*938*/ new ZuTanken = 100-Tank[car];
/*939*/ new preis = ZuTanken * BENZINPREIS;
/*940*/ if (GetPlayerMoney(playerid)-preis < 0) return SendClientMessage(playerid,COLOR_GREY,"Du hast nicht genug Geld!");
/*941*/ GivePlayerMoney(playerid, -preis);
/*942*/ SendClientMessage(playerid, COLOR_GREEN, "Tanken wird gestartet.");
/*943*/ SetCameraBehindPlayer(playerid);
/*944*/ TogglePlayerControllable(playerid,0);
/*945*/ TanktGerade[car] = true;
/*946*/ tanktimer[playerid] = SetTimerEx("Auftanken",500,true,"i",playerid);
/*947*/ return 1;
/*948*/ }mfg.
-
Was habt ihr immer fürn Problem? wieso schreibt ihr "Schreib dir ein selber" -.-* wenn ich ein Suche dan suche ich es, und ich ffrage net ob ich es selber schreiben soll
Dann wäre es aber genau auf deine Wünsche/Vorstellungen angepasst, was ihr immer damit für ein Problem habtUnd es gibt viele Möglichkeiten sowas zu suchen:
Paintballsysteme oder Suchemfg.
-
-
Bedeute die 100 das es bei max 100 personen geht
Scharf kombiniertund glaubst du das reicht
-
Muss da nicht MAX_PLAYER hin
for(new i; i<100; i++)
Meins ist ressourcen schonender (und für deine Zwecke (Server) völlig ausreichend)mfg.
-
So:
//bei OnPlayerLogin
if(IsACop(playerid))
{
SetTimerEx("Timer", 1000, 1, "i", playerid);
}//der Callback
forward Timer(playerid);
public Timer(playerid)
{
new PlayerText3D:playertextid;
for(new i; i<100; i++)
{
if(GetPlayerWantedLevel(i) == 0) continue;
if(playertextid > 0) { DeletePlayer3DTextLabel(playerid, playertextid); }
new Float:X, Float:Y, Float:Z;
GetPlayerPos(i, X, Y, Z+2);
new str[128];
format(str, 128,"Dieser Spieler hat %d Wanteds !",GetPlayerWantedLevel(i));
playertextid = CreatePlayer3DTextLabel(playerid,str,0x008080FF,X,Y,Z,40.0);
}
return 1;
}Ist aus dem Kopf geschrieben, könnte aber gehen
mfg.