Es ist nicht die Frage wo du eine neue herbekommst sondern welche dein Script verwendet.
Schau mal in den Include Ordner dort ist eine a_mysql.inc darin steht mit glück die version deines MySQL Scripts
Es ist nicht die Frage wo du eine neue herbekommst sondern welche dein Script verwendet.
Schau mal in den Include Ordner dort ist eine a_mysql.inc darin steht mit glück die version deines MySQL Scripts
Lädst du das MySQL Plugin ? Wenn ja sieht es nach falschem Plugin aus
Hallo,
ich habe leider ein Problem mit meinen Checkpoints. Sie verschwinden nicht wenn ich durch ihnen durch gehe oder durch fahre.
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == DIALOG_FAHRSCHULE)
{
if(response)
{
if(listitem == 0)
{
PlayerInfo[playerid][pFahrschulmotor]=1;
SetPlayerCheckpoint(playerid,2063.8250,-1940.2357,13.2188,5);
testjob[playerid]= 1;
}
}
}
}
public OnPlayerEnterCheckpoint(playerid)
{
if(testjob[playerid] == 1)
{
DisablePlayerCheckpoint(playerid);
testjob[playerid] =2;
SetPlayerCheckpoint(playerid,1886.5037,-1754.6860,13.2580,5);
}
if(testjob[playerid] == 2)
{
DisablePlayerCheckpoint(playerid);
testjob[playerid] =3;
SetPlayerCheckpoint(playerid,1886.5037,-1754.6860,13.2580,5);
}
}
Schick mal den kompletten Code wie du ihn gerade eingebaut hast
Hallo liebe Brotfische,
eure hilfe ist mal wieder gefragt.
//Edit
Fehler behoben habe aber noch ein anderes Problem.
Hat sich ein Spieler neu Registriert wird dieser nicht gespeichert. Loggt er sich aus und Loggt sich wieder ein um sich dann wieder auszuloggen, speichert er wie gewohnt. Woran könnte das Problem liegen ?
forward OnUserRegister(playerid);
public OnUserRegister(playerid)
{
PlayerInfo[playerid][pLoggedIn] = true;
PlayerInfo[playerid][pKonto]=10000;
PlayerInfo[playerid][pMoney]=10000;
PlayerInfo[playerid][pLevel]=1;
PlayerInfo[playerid][pRPg]=8;
GivePlayerMoney(playerid,PlayerInfo[playerid][pMoney]);
SpawnPlayer(playerid);
return 1;
}
Du solltest schon im Public mit deinen newstates bleiben. Hier einmal der Richtige Code
public OnPlayerStateChange(playerid, newstate, oldstate)
{
if(newstate==PLAYER_STATE_DRIVER)
{
new vID=GetPlayerVehicleID(playerid);
for(new i=0; i<sizeof(ahCars); i++)
{
if(ahCars[i][id_x]!=vID)continue;
//Verkaufsprozess
SetPVarInt(playerid,"buyCarID",i);
new string[256];
format(string,sizeof(string),"Möchten sie das Fahrzeug für %i$ kaufen?",ahCars[i][c_preis]);
ShowPlayerDialog(playerid,DIALOG_AUTOHAUS,DIALOG_STYLE_MSGBOX,"Autoverkauf",string,"Ja","Nein");
break;
}
}
if(newstate==PLAYER_STATE_DRIVER)
{
new vID=GetPlayerVehicleID(playerid);
new vModel=GetVehicleModel(vID);
for(new i=0; i<sizeof(AutosOhneMotor); i++)
{
if(AutosOhneMotor[i]!=vModel)continue;
new tmp_engine,
tmp_lights,
tmp_alarm,
tmp_doors,
tmp_bonnet,
tmp_boot,
tmp_objective;
//Motor an/ausschalten
GetVehicleParamsEx(vID, tmp_engine, tmp_lights, tmp_alarm, tmp_doors, tmp_bonnet, tmp_boot, tmp_objective);
SetVehicleParamsEx(vID, 1, tmp_lights, tmp_alarm, tmp_doors, tmp_bonnet, tmp_boot, tmp_objective);
}
return 1;
}
}
Hey,
würde gerne nochmal anfangen, ein eigenen Server zu schreiben.
Welche MySQL Version empfehlt ihr mir derzeit. (Verständniss, Vorteile..)
Die neuste natürlich
Doch, brauch er, da playerid (in dem Fall 'i') verwendet wird
![]()
muss man alles aus der Nase ziehen xD.
Welche Errors
Er kann die Libs nicht finden daher startet der Server nicht.
Als Tipp vverwende ein 32 Bit Betriebssystem und kein 64 Bit.
Dadurch ist einiges leichter bei SA:MP
Codeapt-file find libmysqlclient.so libmysqlclient-dev: /usr/lib/x86_64-linux-gnu/libmysqlclient.so libmysqlclient18: /usr/lib/x86_64-linux-gnu/libmysqlclient.so.18 libmysqlclient18: /usr/lib/x86_64-linux-gnu/libmysqlclient.so.18.0.0 You have new mail in /var/mail/root
es liegt an keinem port... kann es sein das die datei verschoben werden muss?
Er läuft aber das problem ist nicht behoben... mysql geht auch, accounts laden und speichern.. braucht man libmysqlclient überhaupt, also is das schlimm wenn der fehler kommt
Ja das ist schlimm. So kann er nicht Richtig laden & speichern. Somit crasht der Server dann auch gerne mal. Du brauchst entweder die libs32 glaub
oder eben die _static.so version.
Ich wollte das in einem stock schreiben und nicht in einem public , nur ich weiß nicht wie ich den Pfad in den stock übergebe.
Ich weiß nicht was es für ein Unterschied macht ob du einen stock oder einen public verwendest. Ich kenne es nur mit einem Public daher kann ich dir da nicht groß weiter helfen.
Wie soll ich das den bitte laden wenn nicht mal der Pfad von der Datenbank angegben wird ...
Und ich will keine Fahrzeuge laden aus dem Autohaus was du geschrieben hast .
Deswegen habe ich es umgeschrieben.
Die Pfade sind sehr wohl angegeben.
Schau mal hier
[list=1][*] XmasInfo[i][ObjectID] = cache_get_field_content_int(i,"ObjectID",handle);
[*] XmasInfo[i][sperreX] = cache_get_field_content_int(i,"baumx",handle);
[*] XmasInfo[i][sperreY] = cache_get_field_content_float(i,"baumy",handle);
[*] XmasInfo[i][sperreZ] = cache_get_field_content_float(i,"baumz",handle);
[*] XmasInfo[i][Erstellt] = cache_get_field_content_float(i,"z",handle);
[*] XmasInfo[i][ID] = cache_get_field_content_float(i,"id",handle);
[/list]
musst nur den Wert von float blablabla anpassen
Danke , aber warum machste das mit playerid oder muss man das damit machen ?
Ne brauchst eigentlich nicht nur habe ich das aus dem Autohaus von mir entnommen.
Ich glaube so müsste es klappen
[list=1][*]public LoadObjects(playerid)
[*]{
[*] new num_fields,num_rows;
[*] cache_get_data(num_rows,num_fields,handle);
[*] if(!num_rows)return 1;
[*] for(new i=0; i<num_rows; i++)
[*] {
[*] XmasInfo[i][ObjectID] = cache_get_field_content_int(i,"ObjectID",handle);
[*] XmasInfo[i][sperreX] = cache_get_field_content_int(i,"baumx",handle);
[*] XmasInfo[i][sperreY] = cache_get_field_content_float(i,"baumy",handle);
[*] XmasInfo[i][sperreZ] = cache_get_field_content_float(i,"baumz",handle);
[*] XmasInfo[i][Erstellt] = cache_get_field_content_float(i,"z",handle);
[*] XmasInfo[i][ID] = cache_get_field_content_float(i,"id",handle);
[*] XmasInfo[i][ID] = CreateDynamicObject(XmasInfo[i][ObjectID],XmasInfo[i][sperreX],XmasInfo[i][sperreY],XmasInfo[i][sperreZ],0.0,0.0,a);
[*] }
[*] return 1;
[*]}
[/list]
Hallo, mir grauseln die Augen bei deiner Vorstellung. Bitte schaue dir nochmal deine Vorstellung an. Darin sind einige Rechtschreibfehler enthalten. Bei einer Vorstellung eines neuen Projektes erwarte ich zumindest auch eine Vorstellung ohne Rechtschreibfehler. Daher überarbeite doch eventuell nochmal deine Vorstellung.
Liebe Grüße
Zum Thema PayDay-Timer entweder du speicherst sowas auch in der Datenbank oder in einer Datei , wenn OnGameModeExit aufgerufen wird oder nach einem gewissen interval.
Wie genau meinst du das ? Ich speicher meine PayDay Zeit in einer Datenbank. Bzw er soll es eigentich in einer Datenbank abspeichern.
Ich verwende zum speichern folgenden Befehl
SaveUserStats(playerid);
hier einmal die Funktion
stock SaveUserStats(playerid)
{
//Wenn der Spieler nicht eingeloggt ist, dann speichere seine Statistiken nicht
if(!PlayerInfo[playerid][pLoggedIn]) return 1;
//Ansonsten speichere sie
new query[512];
mysql_format(handle, query, sizeof(query), "UPDATE users SET banreason = '%s',banned = '%i',banner = '%s',alevel = '%d',jobk = '%d', paytime = '%d',prpg = '%d',jobmoney = '%d',konto = '%d',respektpunkte = '%d',paytime= '%d',perso = '%d',dunger = '%d',drogensamen = '%d',job = '%d',matskauf = '%d',drogens = '%d',drogen = '%d',matss = '%d',mats = '%d',level = '%d', money = '%d', kills = '%d', deaths = '%d' WHERE id = '%d'",
PlayerInfo[playerid][pBanreason],PlayerInfo[playerid][pBanned],PlayerInfo[playerid][pBanner],PlayerInfo[playerid][admin_level],PlayerInfo[playerid][pJobk],PlayerInfo[playerid][pPaytime],PlayerInfo[playerid][pRPg],PlayerInfo[playerid][pJobMoney],PlayerInfo[playerid][pKonto],PlayerInfo[playerid][pRespektpunkte],PlayerInfo[playerid][pPayTime],PlayerInfo[playerid][pPerso],PlayerInfo[playerid][pddunger],PlayerInfo[playerid][pDrogensamen],
PlayerInfo[playerid][pJob],PlayerInfo[playerid][pMatskauf],PlayerInfo[playerid][pDrogens],PlayerInfo[playerid][pDrogen],PlayerInfo[playerid][pMatss],PlayerInfo[playerid][pMats],PlayerInfo[playerid][pLevel], PlayerInfo[playerid][pMoney], PlayerInfo[playerid][pKills], PlayerInfo[playerid][pDeaths],
PlayerInfo[playerid][p_id]);
//Das Query wird abgesendet
mysql_pquery(handle, query);
return 1;
}
Weiter nochmal zum Autohaus, ich habe ein falsches Format in der Datenbank verwendet so das dass Auto eigentlich ganz woanders spawnt. Nun denke ich aber, das ich noch ein Ladeproblem der Autos habe.
Hier einmal nochmal der Code vom OnPlayerCarsLoad
forward OnPlayerCarsLoad(playerid);
public OnPlayerCarsLoad(playerid)
{
new num_rows;
for(new i=0; i<num_rows; i++)
{
new id = getFreeCarID();
cache_get_value_name_int(i, "model", cInfo[id][model]);//Integer
cache_get_value_name_int(i, "besitzer", cInfo[id][besitzer]);//Integer
cache_get_value_name_float(i, "x", cInfo[id][c_x]); //Float
cache_get_value_name_float(i, "y", cInfo[id][c_y]);//Float
cache_get_value_name_float(i, "z", cInfo[id][c_z]);//Float
cache_get_value_name_float(i, "r", cInfo[id][c_r]);//Float
cache_get_value_name_int(i, "gespeert", cInfo[id][c_gespeert] );//Integer
cache_get_value_name_int(i, "id", cInfo[id][db_id] );//Integer
if(cInfo[id][c_gespeert] == 0)
{
cInfo[id][id_x] = CreateVehicle(cInfo[id][model],cInfo[id][c_x],cInfo[id][c_y],cInfo[id][c_z],cInfo[id][c_r],001,001,-1);
}
}
}
//Edit Code verbessert
Beim erstellen kriege ich schon Fehler in der MySQL Log womit aber wohl nie jemand was mit anfangen kann
hier erstmal der Code zum erstellen des Fahrzeugs
createPlayerCar(playerid,modelid,Float:x,Float:y,Float:z,Float:r)
{
for(new i=0; i<sizeof(cInfo); i++)
{
if(cInfo[i][id_x]!=0)continue;
GetPlayerName(playerid,PlayerInfo[p_id][pName],MAX_PLAYER_NAME);
cInfo[i][besitzer]=PlayerInfo[playerid][p_id];
cInfo[i][c_x]=x;
cInfo[i][c_y]=y;
cInfo[i][c_z]=z;
cInfo[i][c_r]=r;
cInfo[i][model]=modelid;
cInfo[i][id_x] = CreateVehicle(modelid,x,y,z,r,-1,-1,-1);
new string[128];
format(string,sizeof(string),"Das Auto %i wurde erstellt.",GetVehicleFriendlyName(cInfo[i][id_x]));
SendClientMessage(playerid,COLOR_RED,string);
saveCarToDB(playerid,i);
SaveUserStats(playerid);
return 1;
}
return 1;
}
saveCarToDB(playerid,carid)
{
new query[128];
format(query,sizeof(query),"INSERT INTO autos (besitzer,model,x,y,z,r) VALUES ('%i','%i','%f','%f','%f','%f')",PlayerInfo[playerid][p_id],cInfo[carid][model],cInfo[carid][c_x],cInfo[carid][c_y],cInfo[carid][c_z],cInfo[carid][c_r]);
mysql_pquery(handle,query,"carSavedToDB","i",carid);
return 1;
}
Nadann werde ich dieses Angebot doch mal in betracht ziehen
Windows oder Linux? :b
Ich empfehle jeden der einen Server betreibt Linux zunehmen. Allerdings solltest du dich 0 mit Linux auskennen, verwende Windows oder suche dir jemanden der dich dabei unterstützt den Server sauber zu halten.
Ich arbeite nur mit Linux und nix anderen. Ist in jedenfall stabiler und dir werden nicht schon 500 mb ram vom system her geklaut
Das kann ich im voraus nicht sagen
gehen wir mal von 20-30 Spielern aus, wenns anfangs gut läuft. Ansonsten 100 Slots. LG
Ja das passt in der Regel mit dem Server. Wenn du natürlich dauerthaft 200 Spieler hast hätte ich dir zu etwas höher geraten
Reicht der Middle Server mit 4gb ram für ein SAMP Projekt, mit zwei Servern und einem TS? :o
Wieviele Spieler sollen sich denn auf dem Server aufhalten ?
Hallo Vepixx,
der weiter Verkauf von Lizenzen von Click & Learn 360° ist nicht gestattet. Die Fahrschule hat dir einen Code gegeben mit dem du dich Registrieren solltest. Ebenfalls musstest du einen Fahrschulcode eingeben, damit deine Fahrschule sehen kann wo deine Schwachen Punkte sind und wo deine Guten Punkte sind.
Daher denke ich kann man den Verkauf hier ab Sofort stoppen da dies nicht zulässig ist.
Die App ist nur für den Fahrschüler der die Lizenz gekauft hat.
Hinzu ist deine Preisliche Vorstellung auch der Burner. Ich habe meine Lizenz für 25€ von der Fahrschule erhalten.