Alles anzeigenda kommt das :
error 017: undefined symbol "playerid"
das die zeile :
TogglePlayerControllable(playerid,1);
Mach aus playerid ein i
TogglePlayerControllable(i,1);
Alles anzeigenda kommt das :
error 017: undefined symbol "playerid"
das die zeile :
TogglePlayerControllable(playerid,1);
Mach aus playerid ein i
TogglePlayerControllable(i,1);
Dann schau doch mal unter SaveWeapons und poste das wenn du nicht mehr weiter weißt
Also ich wiederhol mich zum letzten mal.
Wenns es wirklich nur passiert, wenn ein Spieler den Server verlässt, muss der Fehler unter OnPlayerDisconnect seint.
Ich würde dir raten, den Fehler zu beheben und nicht mit nem Bot zu umgehen. Bringt dir nur noch mehr Probleme....
Zeig doch mal deinen Code den du unter OnPlayerDisconnect hast.
Wenns beim verlassen von ID 0 passiert, muss ja dort der Fehler sein.
da kann man sehen, dass du noch sehr unerfahren bist in sachen maps. dafür gibt es einen streamer. dieser packt sowas locker und das nix mit dem rechner zu tun.![]()
der streamer von inconito pack mit den richtigen einstellungen locker 1000 obkejte im umkreis. aber wie gesagt, man muss wissen wie man mit ihm arbeitet. dann ist das dann völlig egal was man für einen rechner hat.
Der Streamer packt das - keine Frage.
Die ganzen Holz PC's von den Usern auf nem Server (z.B. RP/RL Server) allerdings nicht.
Du musst SetPlayerInterior verwenden.
Wenn das ganze passiert sobald sich die Spieler ausloggen, musst du unter OnPlayerDisconnect schauen.
Zeig mal den Code den du da hst.
public OnPlayerPickUpPickup(playerid, pickupid)
{
if(pickupid == repair)
{
if(IsPlayerInAnyVehicle(playerid))
{
RepairVehicle(GetPlayerVehicleID(playerid));
}
}
else if(pickupid == nitro)
{
AddVehicleComponent(GetPlayerVehicleID(playerid), 1010);
}
return 1;
}
Wenn du ein Pickup erstellt hast, kannst du mit OnPlayerPickUpPickup abfragen, ob der Spieler in einem Pickup steht:
public OnPlayerPickUpPickup(playerid, pickupid)
{
if(pickupid == BSN)
{
//Restlicher Code
}
}
Dein Befehl macht garkeinen Sinn Du hast rein return und führst danach noch ganz normal Code aus. Kann garnich gehn
if(GetPlayerMoney(playerid)<2)return SendClientMessage(playerid,0xFFFFFFFF, "Du hast nicht genügend Geld um dir das zu kaufen!");
GivePlayerMoney(playerid,-2);
SetPlayerHealth(playerid,100.0);
SendClientMessage(playerid,0xFFFFFFFF, "Du hast dir für 2€ einen Hamburger gekauft. Guten Appetit!");
return 1;
So bin dann mal offline. Gute nacht und viel Spaß noch
Zu deinem 1. Problem:
Hast du auch GivePlayerMoney verwendet?
GivePlayerMoney(playerid,SpielerInfo[playerid][pGeld]); //Gegenfalls abändern!
Zu deinem 2. Problem:
Du möchstest deinen Stats Befehl verschönern? Tus doch einfach Hast ja schon mit den benötigten Funktionen gearbeitet:
if(strcmp(cmdtext,"/stats",true,10) == 0) {
new string[128];
format(string,sizeof(string),"------------------>> Die Statistiken von %s <<--------------------------------",SpielerInfo[playerid][pName]); SendClientMessage(playerid,BLAU,string);
format(string, sizeof(string),"Geld: %d\nAdminlevel: %d\nLevel: %d",SpielerInfo[playerid][pGeld], SpielerInfo[playerid][pAdminlevel], SpielerInfo[playerid][pLevel]); SendClientMessage(playerid,BLAU,string);
return 1; }
Erstellst du das TextLabel nach dem formatieren des Strings oder davor?
Wenn du es davor erstellst musst du den Text mit Update3DTextLabelText ändern.
Sieht dann so aus:
new Text3D:ID = Create3DTextLabel("Hallo Bla Bla",Rot, 30.0, 40.0, 50.0, 40.0, 0);
new stringText[128];
format(stringText, sizeof(stringText), "%d.", GetPlayerID(PlayerName));
Update3DTextLabelText(ID, Rot, stringText);
Du musst zuerst einen String erstellen und mit format die entsprechenden Variablen einfügen.
Sieht später so aus:
new string[128];
format(string, sizeof(string),"Name: %s\nLevel: %d\nAlter: %d",SpielerInfo[playerid][pName], SpielerInfo[playerid][pLevel],SpielerInfo[playerid][pAlter]);
ShowPlayerDialog(playerid, DIALOG_STATS, DIALOG_STYLE_MSGBOX, "Stats",string,"Ok");
Einfach an der entsprechenden Stelle einen break setzen.
Damit wird zwar die Schleife weiterhin ausgeführt, aber jeglicher Code nach dem break wird nicht ausgeführt.
Ich geb dir mal eine logische Hilfe. Dann solltest du eigentlich selbst damit fertig werden.
// Variablen für die X,Y und Z Koordinate erstellen
new Float:PlayerX[MAX_PLAYER];
new Float:PlayerY[MAX_PLAYER];
new Float:PlayerZ[MAX_PLAYER];
OnPlayerConnect(playerid)
{
//Hier musst du für PlayerX,PlayerY,PlayerZ die Daten auslesen. Entweder per DINI oder über eine MySQL Datenbank
SetPlayerPos(playerid,PlayerX[playerid],PlayerY[playerid],PlayerZ[playerid]); // Setzt den Spieler an die angegebenen Koordianten
}
OnPlayerDisconnect(playerid, reason)
{
GetPlayerPos(playerid,PlayerX[playerid],PlayerY[playerid],PlayerZ[playerid]); //Speichert die aktuelle Position in die entsprechende Variable
//Hier musst du die Variablen PlayerX,PlayerY,PlayerZ abspeichern. Entweder per DINI oder über eine MySQL Datenbank
}
Du musst den Score auch mit SetPlayerScore setzen.
Bsp:
SetPlayerScore(playerid,5); // Damit ist der Score auf 5
Hast du davor auch forward FBIWaffe(playerid) benutzt?
Du könntest entweder unter OnPlayerUpdate oder mit einem Timer abfragen ob der Spieler in einer Zone ist, in welcher die Waffen verboten sind.
Wenn er in einer ist, kannst du mit GetPlayerWeapon seine aktuelle Waffe herausbekommen und mit SetPlayerArmedWeapon eine neue Waffe setzen.
Du musst den gespawnten Fahrzeugen einen Interior zuweisen.
Schau dir mal die Funktion LinkVehicleToInterior an
Gecodetes Design wurde uns damals noch von Blacky zur Verfügung gestellt.
Beschwer dich bei ihm. Er stand auch von anfang an im Copyright davon.
Auserdem ist von der Forenstruktur rein garnichts abgeschaut.
Wir hatten schon im Oktober 2012 eröffnet und hatten schon damals so eine Strukur
Grüße
Wer hier eventuell was von wem abschaut sei mal dahingestellt.
Was soll an der Struktur denn bitte anders sein?
Wenn wir GTA Mods anbieten können wir nunmal keine Kategorie "Biete Blumen" erstellen
Forendesign ist alles abgeklärt.
Wer hier "Famer" ist, sollte jeder für sichs elbst entscheiden.