Was für einen TextDraw Editor nutzt du denn? ![]()
Soweit ich weiß, brauchst du da gar keine Plugins...
Was für einen TextDraw Editor nutzt du denn? ![]()
Soweit ich weiß, brauchst du da gar keine Plugins...
Schreib es so:
ocmd:stats(playerid, params[])
{
new string[256];
format(string,sizeof(string),"accounts/%s.txt",SpielerName(playerid));
if(dini_Int(string,"Perso")==1)
{
new level=dini_Int(string,"Level");
format(string,sizeof(string),"Name \t%s [%i] \t100 \t100\n",SpielerName(playerid),playerid);
format(string,sizeof(string),"%sLevel \t%i \t100 \t100\n",string,level);
strcat(string,"Respekt \t$5000 \t100 \t100\nZeit seit PayDay \t$5000 \t100 \t100\nWarns \t$5000 \t100 \t100\nRespakt \t$1000 \t100 \t50");
ShowPlayerDialog(playerid,DIALOG_Stats,DIALOG_STYLE_TABLIST,"Stats",string,"Select", "Cancel");
}
return 1;
}
Zeige mal mehr Zeilen...
Datenbank nichtmehr importieren
Das ist keine Datenbank sondern Tabellen...
Eine Datenbank musst du schon erstmal selbst erstellen ![]()
Also Variablen im define kann man nicht einfach so mal verändern ?
Sachen die du mit #define machst, sind keine Variablen...
Zum Beispiel:
#define MaxVeh 5
//Irgendwo
MaxVeh = 9;
Während dem Compilen, ersetzt der Pre-Compiler das durch:
5 = 9;
und das macht ja absolut keinen Sinn.
Wenn du mit Variablen arbeiten willst, nutze new.
Aber hier musst du nur mit einer PlayerVariable arbeiten...so wie du dein Geld...Level etc abspeicherst...
Deshalb sind die Funktionen nicht ganz richtig.
Das konnte man aus deinem Post nicht erfahren, ob oder ob das so nicht sein sollte.
Okay, wenn das so sein soll, dann behandle das doch einfach als SpielerVariable und...speichere und lade sie genau so (dann brauchst du auch kein define).
Ja, es gibt bereits R39-3: https://github.com/pBlueG/SA-MP-MySQL/releases
Da ist immer ein Changelog dabei, kannst also alles genau nachlesen ![]()
Also so wie ich das jetzt verstanden habe, willst du die Variable MaxVeh dynamisch während der Laufzeit ändern und in einer Datei speichern.
Dann musst du das nicht für jeden Spieler machen, sondern kannst das einfach global machen:
//Oben anstatt dem Makro
#define MAX_VEH_PATH "MaxVeh.ini"
new MaxVeh;
//Am besten machst du dir 2 Funktionen:
stock SetMaxVeh(anzahl)
{
new File:f=fopen(MAX_VEH_PATH,io_write),buffer[8];
valstr(buffer,anzahl),MaxVeh = anzahl;
fwrite(f,buffer),fclose(f);
}
stock GetMaxVeh()
{
new buffer[8] = "3";
if(!fexist(MAX_VEH_PATH)) return strval(buffer); //Hier falls es nicht existiert der Defualt Wert 3
new File:f=fopen(MAX_VEH_PATH,io_read);
fread(f,buffer),fclose(f);
return strval(buffer);
}
//Dann unter OnGameModeInit
MaxVeh = GetMaxVeh();
//Und in einem Command oder so kannst du sie so setzen:
SetMaxVeh(5); //dann wäre das z.B. 5
Hoffe du hast es so grob verstanden ![]()
Naja, du machst ein Array:
//Oben in dein Skript schreiben:
stock const Float:checkP[][3] = {
{1436.0986,-1735.5679,13.0875},
{1818.4584,-1911.8336,13.0939},
{2059.4771,-1940.6632,13.0563},
{2008.5358,-1457.9471,13.0952},
{1718.0936,-1414.9360,13.0885},
{1558.5846,-1294.5383,16.4447},
{1427.1154,-1030.7017,23.3610},
{1203.2323,-933.3453,42.4372},
{793.3743,-1354.3220,13.0956},
{561.6163,-1399.9645,14.5171},
{357.1045,-1649.3328,32.5020},
{1143.0398,-1737.3237,13.2442}
};
//Und dann unten einfach so:
switch(Bus[playerid])
{
case 1..12: {
new str[64],id=Bus[playerid]-1;
format(str,64,"Du hast den Checkpoint Nr. %d erreicht.",Bus[playerid]);
SendClientMessage(playerid,GRUN,str);
SetPlayerCheckpoint(playerid,checkP[id][0],checkP[id][1],checkP[id][2], 5.0);
Bus[playerid]++;
}
case 13: {
DisablePlayerCheckpoint(playerid);
SendClientMessage(playerid,GRUN, "Herzlichen Glueckwunsch Du hast Bestanden");
DestroyVehicle(GetPlayerVehicleID(playerid));
}
}
PS: Mit TogglePlayerControllable(playerid,0); freezt du den Spieler...musst ihn aber wieder entfreezen (TogglePlayerControllable(playerid,1)) mit einem Timer o.ä.
mfg. ![]()
aTickets...ist deine TextDraw id, beinhaltet aber nicht die Anzahl der Tickets ![]()
Dann mach es so:
//Oben ins Skript:
#define IsDriverFromModel(%0,%1) (GetVehicleModel(GetPlayerVehicleID(%0)) == %1 && GetPlayerState(%0) == PLAYER_STATE_DRIVER)
Mit dem Makro kannst du prüfen ob er Fahrer ist und sich in einem bestimmten Auto (modelid befindet).
if(!IsDriverFromModel(playerid,560)) return SendClientMessage(playerid,-1,"Sie befinden sich nicht als Fahrer in einem Sultan!"); //(560 = Sultan)
Hast du eine MySQL-Datenbank auch angelegt auf deinem Server? ![]()
Du hast da Rechtschreibfehler drinnen ![]()
if(sscanf(parmas,"i",pID))
Das zu: if(sscanf(params,"i",pID))
und das zu:
GetPlayerPos(pID,Floatx,Float:y,Floar:z);
SetPlayerCheckpoint(playerid,Float:x,Float:y,Float:z);
GetPlayerPos(pID,x,y,z);
SetPlayerCheckpoint(playerid,x,y,z);
[19:54:46] Failed.
Siehst du, die Plugins wurden nicht geladen.
Mach genau das mal: Gamemode lädt nicht
mfg. ![]()
...aber Internet hast du schon oder? ![]()
Mal Firewall ausschalten & evtl Antivirus...und wenn das nicht hilft, einfach mal PC restarten ![]()
an: Unknown!
Dann downloade dir mal das nativechecker Plugin...du lädst nicht alle oder die falsche Version von Plugins ![]()
Downloade dir mal das nativechecker & crashdetect Plugin und poste deinen server_log ![]()
Dir ist klar, dass du einfach einen doppelklick auf die Wand machen kannst und dann werden dir die Texturen aufgelistet? ![]()