Rotieren Lassen
Schade ![]()
ModelPreviews kannst du drehen, so TextDraws leider nicht ![]()
mfg. ![]()
Rotieren Lassen
Schade ![]()
ModelPreviews kannst du drehen, so TextDraws leider nicht ![]()
mfg. ![]()
Was meinst du mit drehen?
Rotieren lassen ein ganzes TextDraw oder reden wir hier von einem ModelPreview?
mfg. ![]()
es war schon Public aber egal
Oh stimmt ![]()
Bin nur drüber gescrollt, dachte da steht stock.
Aber dann macht dein Beispiel ja eigentlich noch weniger Sinn...da du nur die Klammern entfernt hast ![]()
mfg. ![]()
Ich habe 3 Tankstellen in LV zum Beispiel, doch damit ich nicht tausend mal /tanken machen muss oder den Befehl vollspamme,
will ich sie vorher definieren, das /tanken alle diese Koordinaten erreicht und abruft, verstehst du, dass so gesehen an all diesen Punkten /tanken geht.
Ja, dazu brauchst du aber kein MAX_PLAYERS und auch kein Enum ![]()
Nimm mein 1. Codebeispiel und dann kannst du so eine Funktion schreiben:
stock IsInRangeOfTankstelle(playerid) {
for(new i; i<sizeof TankKords; i++) {
if(IsPlayerInRangeOfPoint(playerid,7.5,TankKords[i][0],TankKords[i][1],TankKords[i][2])) return 1;
}
return 0;
}
//Nutzung:
if(!IsInRangeOfTankstelle(playerid)) return SendClientMessage(playerid,-1,"Du befindest dich an keiner Tankstelle!");
mfg. ![]()
Ich will die Tankstellen Punkte zum tanken abspeichern damit ich sie leicht abrufen kann, geht das nicht über enum?
Ein Enum definiert nur den Typ für die Variablen, es initialisiert nichts ![]()
Zudem funktioniert das so nicht mit MAX_PLAYERS, was willst du da überhaupt machen? ![]()
Sinnvoll wäre so etwas:
//Ohne Enum:
new Float:TankKords[][3] = {
{2114.4126,928.6173,10.5474},
{2115.1919,922.9832,10.5474},
{2114.7725,917.8232,10.5474},
{2115.0771,911.6562,10.5474},
{2639.7839,1098.0349,10.5474},
{2639.5811,1103.5743,10.5474},
{2639.9871,1108.9187,10.5474},
{2639.6855,1114.6630,10.5474},
{2194.1582,2474.6921,11.0082},
{2199.8157,2475.2302,11.0145},
{2205.0735,2474.8633,11.0137},
{2210.7324,2475.4531,11.0077}
};
//Abfragen machst du so:
TankKords[0][0] //-> Gibt dir die X Koordinate von der 1. Reihe
Wenn du das unbedingt mit einem Enum lösen willst, was in diesem Fall nicht erforderlich ist, kannst du es auch so machen:
enum TankKoordinaten {
Float:t_X,
Float:t_Y,
Float:t_Z
};
new TankKords[][TankKoordinaten] = {
{2114.4126,928.6173,10.5474},
{2115.1919,922.9832,10.5474},
{2114.7725,917.8232,10.5474},
{2115.0771,911.6562,10.5474},
{2639.7839,1098.0349,10.5474},
{2639.5811,1103.5743,10.5474},
{2639.9871,1108.9187,10.5474},
{2639.6855,1114.6630,10.5474},
{2194.1582,2474.6921,11.0082},
{2199.8157,2475.2302,11.0145},
{2205.0735,2474.8633,11.0137},
{2210.7324,2475.4531,11.0077}
};
//Abfragen machst du so:
TankKords[0][t_X] //-> Gibt dir die X Koordinate von der 1. Reihe
//Edit: Ups hatte was vergessen ![]()
mfg. ![]()
Bei mir speichert er auch nicht
Dein Array ist zu klein ![]()
Schreibe es so:
new query[256];
format(query,sizeof query,
mfg. ![]()
Ist es möglich abzufragen, ob eine Textdraw momentan geklickt wird, praktisch, eine Funktion die aufgerufen wird, solange die Textdraw geklickt wird^^
Das könnte man sogar tun ![]()
Also es ist zwar etwas kompliziert aber du kannst folgendes machen:
1. Sobald er 1x darauf klickt setzt du eine Variable (boolean) auf true.
2. Gleichzeitig wird der Callback OnPlayerKeyStateChange aufgerufen, da LMB (Left Mouse Button) gedrückt wurde.
3. In diesem Callback kannst du nun durch das Holding Makro prüfen, wie lange er die Mouse hält und halt prüfen über das boolean ob er überhaupt auf das TextDraw geklickt hat.
So könnte man es realisieren ![]()
mfg. ![]()
Habe alles jetzt mehrfach überprüft, aber egal was ich mache immer das gleiche.
...Entweder du postest mal diesen Command hier im Forum oder du schickst mir deine TeamViewer Daten per PN und ich schaue mal drüber ![]()
mfg. ![]()
war das nicht die Geschichte, das er zB. 4 Sachen im Array angegeben hat, aber 5 Angaben in Rangname verwendet?
Genau er hat eine Variable deklariert:
new test[3];
//Man hat hier einen Bereich von: 0-2 (Entspricht 3 Feldern, 0 und 1 und 2)
//macht aber folgendes:
test[3] = 1; //Fehler, da Feld 3 nicht mehr verfügbar ist
//Da taucht dann so ein Fehler auf "Array index out of bounds"
mfg. ![]()
Immer diese lange unnötige "GF-Schreibweise" ![]()
Deshalb will dir da auch keiner helfen, weil das viel zu viel Code immer ist um das neu zu schreiben.
Ich kann dir jetzt auch nicht direkt sagen, wo der Fehler liegt, da mir das immer zu doof ist diesen langen Code durchzugehen.
Nutze am besten einen print-Debug um den Fehler zu finden ![]()
versuch mal so:
Macht wirklich gar keinen Unterschied, außer das die Funktion jetzt public ist ![]()
mfg. ![]()
Ich weiß leider nicht was dieser bedeutet, weiß da einer vielleicht was ?
Du hast eine Variable deklariert mit einem zu niedrigen Array ![]()
Im Command "rangname" ![]()
mfg. ![]()
Schonmal daran gedacht, dass der Datenbank User samp**** nicht die notwendigen Rechte hat um auf die Datenbank zuzugreifen? ![]()
PS: Das stellst du da ein, wo du den MySQL User erstellt hast in der PHPMyAdmin Übersicht ![]()
mfg. ![]()
Nur noch ein /giverank befehl und damit kann ich nichts anfangen ich weis das ich eine Abfrage ob spieler Leader ist dann eine Abfrage welche Fraktion etc. aber ich weis nicht wie ich das schreibe.
So zum Beispiel:
ocmd:giverank(playerid,params[]) {
if(!GetPVarInt(playerid,"Fraktion") || GetPVarInt(playerid,"Rank") != 6) return SendClientMessage(playerid,-1,"Du bist nicht der Leader einer Fraktion!");
new pID,rang,string[144],name[2][MAX_PLAYER_NAME];
if(sscanf(params,"ud",pID,rang)) return SendClientMessage(playerid,-1,"Verwendung: /giverank [spielerid] [Rang]");
if(!IsPlayerConnected(pID)) return SendClientMessage(playerid,-1,"Ein Spieler mit dieser ID ist nicht online!");
if(GetPVarInt(pID,"Fraktion") != GetPVarInt(playerid,"Fraktion")) return SendClientMessage(playerid,-1,"Dieser Spieler ist nicht in deiner Fraktion!");
if(rang <= 0 || rang > 6) return SendClientMessage(playerid,-1,"Dies ist ein ungültiger Rang!");
GetPlayerName(playerid,name[0],MAX_PLAYER_NAME),GetPlayerName(pID,name[1],MAX_PLAYER_NAME);
format(string,sizeof string,"* Leader %s hat %s zum Rang %s (%d) ernannt!",name[0],name[1],rang_name[GetPVarInt(pID,"Fraktion")-1][rang-1],rang);
return SetPVarInt(pID,"Rank",rang),SendClientMessage(playerid,-1,string),SendClientMessage(pID,-1,string);
}
mfg. ![]()
Ist das so richtig?
Schreib den Command von mir so, dann klappt es:
ocmd:f(playerid,params[]) {
if(!params[0]) return SendClientMessage(playerid,-1,"Benutze: /f [Text]");
if(!GetPVarInt(playerid,"Fraktion")) return SendClientMessage(playerid,-1,"Du bist in keiner Fraktion!");
new string[144],name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,MAX_PLAYER_NAME),format(string,144,"* %s %s sagt: %s",rang_name[GetPVarInt(playerid,"Fraktion")-1][GetPVarInt(playerid,"Rank")-1],name,params);
for(new i; i<MAX_PLAYERS; i++) {
if(!IsPlayerConnected(i) || GetPVarInt(i,"Fraktion") != GetPVarInt(playerid,"Fraktion")) continue;
SendClientMessage(i,-1,string);
}
return 1;
}
mfg. ![]()
Es funktioniert irgendwie nicht keine Ahnung warum da sthet nur Server unknow command.
Besitzt du eine PVar auch, die den Namen "Rang" trägt?
Du musst bei deinem Fraktions Befehlen, wenn er invitet wird folgendes schreiben:
SetPVarInt(playerid,"Rang",1);
Und auch einen GiveRank Befehl wo du dieses PVar nutzt ![]()
mfg. ![]()
Kaliber: Du hattest auch Fehler Hinter der If-Abfrage müssen zwei ")" Klammern hin
Hab auf den Rest Code nicht geschaut gehabt...
Es muss so heißen du hast auch noch Fehler (der Speed bei MoveObject) ![]()
ocmd:auf(playerid,params[]){
if(!IsPlayerInRangeOfPoint(playerid,4.0,1583.7000000,-1637.9000000,12.4000000))return SendClientMessage(playerid,ROT,"Du bist nicht in der nähe des Tores.");
return MoveObject(tor,1583.7000000,-1637.9000000,12.4000000-10,4.0);
}
ocmd:zu(playerid,params[]){
if(!IsPlayerInRangeOfPoint(playerid,4.0,1583.7000000,-1637.9000000,12.4000000))return SendClientMessage(playerid,ROT,"Du bist nicht in der nähe des Tores.");
return MoveObject(tor,1583.7000000,-1637.9000000,12.4000000,4.0);
}
mfg. ![]()
Das musst du so schreiben:
ocmd:auf(playerid,params[])
{
if(!IsPlayerInRangeOfPoint(playerid,1583.7000000,-1637.9000000,12.4000000) return SendClientMessage(playerid,ROT,"Du bist nicht in der nähe des Tores.");
return MoveObject(tor,1583.7000000,-1637.9000000,12.4000000-10);
}
ocmd:zu(playerid,params[])
{
if(!IsPlayerInRangeOfPoint(playerid,1583.7000000,-1637.9000000,12.4000000) return SendClientMessage(playerid,ROT,"Du bist nicht in der nähe des Tores.");
return MoveObject(tor,1583.7000000,-1637.9000000,12.4000000);
}
Es kommt kein Semikolon [;] hinter eine Abfrage ![]()
mfg. ![]()
Schreib das so:
if(strcmp(cmd, "/bank",true) == 0)
{
if(IsPlayerInRangeOfPoint(playerid,7.0,1432.3073,-997.6413,1639.7911)) return ShowPlayerDialog(playerid, BANK,DIALOG_STYLE_LIST,"{FAFAFA}Bank", "Kontostadt\nEinzahlen\nAuszahlen\nÜberweisen", "Auswählen", "Abbrechen");
return SendClientMessage(playerid, COLOR_RED, "Du bist nicht in der Bank.");
}
PS: Doch nicht 2 if-Abfragen untereinander ohne Klammern ![]()
mfg. ![]()
MEIN CODE :
Das musst du so schreiben:
static const rang_name[][][] = {
{"Azubi","Streifenpolizist","Polizist","Ausbilder","Sondereinsatzkomando","Sondereinsatzkomando-Leiter"},
{"Azubi","Politesse","Abschlepper","Kontrolleur","Ausbilder","Ordnungsamt-Direktor"},
{"Azubi","Hilfssanitäter","Sanitäter","Notartzt","Arzt","Chefarzt"},
{"Laufbrusche","Gangster","Obergangster","Drogen-Boss","Mafia Boss","Most Wanted"},
{"Kaikei","Shingiin","Saiko-komon","Shateigashira","Wakagashira","Oyabun"}
};
mfg. ![]()
Stimmt jetzt Crasht der Comp.
Wenn du meinen Code nutzt, hast du auch diese Variablen oben deklariert:
//Schreib oben folgendes in dein Script
static const lspd_skins[] = {127,28,10,122,27,181};
new bool:IsUndercover[MAX_PLAYERS char],PlayerSkin[MAX_PLAYERS];
mfg. ![]()