Weil _VZ private ist...
Beiträge von Kaliber
-
-
Deine Schleife ist falsch

Sobald ein Spieler nicht connected ist, bricht die ab...
Entwender du nutzt einfach foreach oder du machst es so:
#define LOOP_PLAYERS(%0) for(new %0=GetPlayerPoolSize(); %0!=-1; %0--) if(IsPlayerConnected(%0))
-
Wie sieht denn dein LOOP_PLAYERS aus?
Und, bist du auch sicher admin?

und wird das auch aufgerufen?

-
Ich war mal so frei und hab dir so ein kleines Programm erstellt


Wenn du da auf Settings gehst, kannst du einen Ordner Pfad auswählen, dort würde er dir dann eine Textdatei mit dem Namen counter.txt anlegen.
Wenn du nichts auswählst, wird dir das nur auf der GUI angezeigt (im Programm da auf der Oberfläche).Um hochzuzählen musst du folgende Taste drücken:

Um den Counter zurück zu setzen, geh einfach auf Datei -> Reset.
Viel Spaß damit

-
Versuche mal diese Funktion zu nutzen: https://wiki.sa-mp.com/wiki/SHA256_PassHash
Ist weitaus besser

-
GetPlayerName(playerid)
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,MAX_PLAYER_NAME);
format(INFO,sizeof(INFO),"Name: %s\nIP: %s", name, GetIP(playerid));
ShowPlayerDialog(playerid, D_SOBEITDETECTED, DIALOG_STYLE_MSGBOX, "Sobeit Detected", INFO, "Bye", ""); -
Wieso machst du es dir so umständlich? :x
Ich meine "dynamisch" ist dein System so oder so nicht, da du permanent was im Skript ergänzen musst...
Ganz ehrlich, da machs lieber direkt statisch, das ist wesentlich schneller und effizienter

-
Auch mögl. für Streamer 3D Text? (Dynamic)
Joa...die Suche hilft

CreateDynamic3DTextLabel(const text[], color, Float:x, Float:y, Float:z, Float:drawdistance, attachedplayer = INVALID_PLAYER_ID, attachedvehicle = INVALID_VEHICLE_ID, testlos = 0, worldid = -1, interiorid = -1, playerid = -1, Float:distance = 100.0);
-
X ist die Breite.
Y ist die Länge.
Z ist die Höhe
Also Y/2 nehmen

-
Hmm poste evtl mal dein Enum von MoveCamera und markiere die Zeilen wo der Fehler drin vorkommt

-
Schreib mal oben in dein Skript:
#define FACTION_CARS_LOCKABLE
-
Kannste mit einer Funktion machen, also z.B. so:
C
Alles anzeigennew isObjAttached[MAX_VEHICLES]; //Dann bei deinem Befehl: new veh = GetPlayerVehicleID(playerid); if(!veh) return SendClientMessage(playerid,-1,"Du befindest dich in keinem Fahrzeug!"); new model = GetVehicleModel(veh); if(!IsVehValid(model)) return SendClientMessage(playerid,-1,"Du befindest dich in keinem Mechaniker Truck!"); //Zum beispiel wenn das nur darin gehen soll if(isObjAttached[veh]) //Wenn eins schon dran ist zerstören: { DestroyObject(isObjAttached[veh]); isObjAttached[veh] = 0; return 1; } isObjAttached[veh] = CreateObject(19294, 0,0,0,0,0,0); PositioniereObject(model,veh); return 1; //Und dann noch zu prüfen ob das Fahrzeugmodel gültig ist: stock IsVehValid(model) { switch(model) { case 525,405: return 1; //Zum beispiel musste dann erweitern } return 0; } //Dann unten im Skript: stock PositioniereObject(model,veh) { switch(model) { case 525: AttachObjectToVehicle(isObjAttached[veh], veh, 0,0,0.5); //Hier bei Mechaniker truck case 405: //usw } return 1; } -
Und am Ende kann ich das hier doch sicherlich packen, damit, falls was nicht stimmt, der Spieler auch die Nachricht kriegt, und aus dem Fahrzeug geworfen wird.
Natürlich

-
Soo zum Beispiel:
C
Alles anzeigennew isObjAttached[MAX_VEHICLES]; //Dann bei deinem Befehl: new veh = GetPlayerVehicleID(playerid); if(!veh) return SendClientMessage(playerid,-1,"Du befindest dich in keinem Fahrzeug!"); new model = GetVehicleModel(veh); if(model != 525) return SendClientMessage(playerid,-1,"Du befindest dich in keinem Mechaniker Truck!"); //Zum beispiel wenn das nur darin gehen soll if(isObjAttached[veh]) //Wenn eins schon dran ist zerstören: { DestroyObject(isObjAttached[veh]); isObjAttached[veh] = 0; return 1; } isObjAttached[veh] = CreateObject(19294, 0,0,0,0,0,0); AttachObjectToVehicle(isObjAttached[veh], veh, 0,0,0.5); //zum beispiel die koords return 1; -
Ehhhhhhhhhhhhhhhhh:
C
Alles anzeigenif(fStaatShop[i][sVType] == 0 && (Spieler[playerid][pFraktion] == 1 || Spieler[playerid][pFraktion] == 3)) { //Hier der Code...wenn VType 0 } else if(fStaatShop[i][sVType] == 1 && Spieler[playerid][pFraktion] == 1) { //Hier der Code...wenn VType 1 } else if(fStaatShop[i][sVType] == 2 && Spieler[playerid][pFraktion] == 3) { //Hier der Code...wenn VType 2 } -
Das müsste die 19294 gewesen sein.
Einfach per AttachObjectToVehicle..an das gewünschte Fahrzeug machen

-
So am besten:
C
Alles anzeigenfor(new v=GetVehiclePoolSize(); v!=0; v--) { if(IsTrailerAttachedToVehicle(v) || IsTrailer(v)) continue; //Wenn Trailer dran ist, wird das Fahrzeug übersprungen (oder wenn es ein Trailer ist :D) SetVehicleToRespawn(v); } //Schreib unten die Funktion noch hin: stock IsTrailer(v) { switch(GetVehicleModel(v)) { case 435,450,569,570,584,590,591,606,607,608,610,611: return 1; } return 0; } -
Ja hab den Post editiert

-
Mein Fehler, so:
C
Alles anzeigen//Du machst ein Array: new bool:routen[5]; //Dann zum Dialoge Auflisten im Befehl: new string[10 * sizeof(routen)]; for(new i; i<sizeof(routen); i++) { if(routen[i]) continue; //da gerade belegt format(string,sizeof(string),"%s%sRoute %d",string,((i!=0)?("\n"):("")),i+1); } if(string[0] == EOS) return SendClientMessage(playerid,-1,"Alle Routen belegt!"); ShowPlayerDialog(playerid,1337,DIALOG_STYLE_LIST,"Wähle eine Route!",string,"Bestätigen","Abbrechen"); //Dann unter OnPlayerDialogResponse if(dialogid == 1337) { if(!response) return 1; //Hier hat er auf abbrechen geklickt new index = strval(inputtext[6])-1; //Hier steht die id von der Route (-1 da Array bei 0 beginnt) routen[index] = true; //hier ist die route belegt :D (vergessen) :D } -
Ahh aso, das ist Spielerübergreifend, alles klar
C
Alles anzeigen//Du machst ein Array: new bool:routen[5]; //Dann zum Dialoge Auflisten im Befehl: new string[8 * sizeof(routen)]; for(new i; i<sizeof(routen); i++) { if(routen[i]) continue; //da gerade belegt format(string,sizeof(string),"%sRoute %d",string,i+1); } if(string[0] == EOS) return SendClientMessage(playerid,-1,"Alle Routen belegt!"); ShowPlayerDialog(playerid,1337,DIALOG_STYLE_LIST,"Wähle eine Route!",string,"Bestätigen","Abbrechen"); //Dann unter OnPlayerDialogResponse if(dialogid == 1337) { if(!response) return 1; //Hier hat er auf abbrechen geklickt new index = strval(inputtext[6])-1; //Hier steht die id von der Route (-1 da Array bei 0 beginnt) routen[index] = true; //hier ist die route belegt :D (vergessen) :D }