was meinst du mit zweitem? es ist eigentlich egal wer reinkommt, es wird halt einfach jedesmal die verbindung wieder aufgebaut und dann crasht der server.. wieso auch immer..
Beiträge von [EGC] selEcT
-
-
Hallo zusammen
Irgendwie ein bisschen komisch.
Ich starte den Server, alles wird geladen ganz normal, ich kann connecten, geht, bekomme meine daten, geht auch. Dann spiel ich (oder jemand anders) ne weile und geh raus. Dann bleibt der server einige zeit leer und niemand ist drauf... der server läuft immernoch.. dann kommt nach vielleicht 5 stunden wieder einer, mysql versucht sich zu verbinden, schafft dies auch und stürzt dann laut log ab:
ZitatAlles anzeigen
[15:20:46] MySQL: Verbindung zur Datenbank wird hergestellt...
[15:20:46] [MySQL] Connected (1) to mysql @ Localhost via UNIX socket.
[15:20:46] [MySQL] Version 5.0.51a-24+lenny4.----------
Loaded log file: "server_log.txt".
----------SA-MP Dedicated Server
----------------------
v0.3b R2, (C)2005-2010 SA-MP Team[15:22:25]
[15:22:25] Server Plugins
[15:22:25] --------------warum macht der das? wie kann ich das ändern? Ist das plugin von strickenkid..
MFG
-
breadfish sich garnicht mehr um Sa-mp.de kümmert.....
stimmt so nicht ganz. er kommt ja wieder hat er gesagt

-
hab ich mir auch schon gedacht.
if(PlayerToPoint(3, playerid,HouseInfo[i][hExitx], HouseInfo[i][hExity], HouseInfo[i][hExitz]) && GetPlayerVirtualWorld(playerid) == i)
{
SetPlayerInterior(playerid,0);
SetPlayerPos(playerid,HouseInfo[i][hEntrancex],HouseInfo[i][hEntrancey],HouseInfo[i][hEntrancez]);geht aber auch nicht so richtig.
Beim eintreten in ein Haus geb ich dem Spieler die Virtualworld der id des hauses, also haus 1 hat vw 1 etc.
//edit: ich find einfach nichts was falsch sein könnte. Am anfang speichert er alles von einer mysql tabelle in den variablen. das "i" sollte doch immer die gleiche nummer sein, oder ist die for schleife schneller als das spiel reagiert (kA..)?
Mehr Codes wären nicht schlecht!
Ich kann so keinen fehler sehen.und was für ein Code brauchst du mehr..?
//edit: neue erkenntnis: wenn ich mit /houseo zu jedem haus springe, dann springt er immer zu einem anderen, also sollte eigentlich die variablenzuweisung stimmen..
hier noch der gesamte code zum rein und rausgehen (per taste):
for(new i = 0; i < sizeof(HouseInfo); i++)
{
if(PlayerToPoint(3, playerid,HouseInfo[i][hExitx], HouseInfo[i][hExity], HouseInfo[i][hExitz]) && GetPlayerVirtualWorld(playerid) == i)
{
SetPlayerPos(playerid,HouseInfo[i][hEntrancex],HouseInfo[i][hEntrancey],HouseInfo[i][hEntrancez]);
SetPlayerInterior(playerid,0);
PlayerInfo[playerid][pInt] = 0;
PlayerInfo[playerid][pLocal] = 255;
SetPlayerVirtualWorld(playerid,0);
if(HouseInfo[i][hHel] == 1)
{
new Float:tempheal;
GetPlayerHealth(playerid,tempheal);
if(tempheal < 100.0) { SetPlayerHealth(playerid,100.0); }
return 1;
}
}
else if (PlayerToPoint(3, playerid,HouseInfo[i][hEntrancex], HouseInfo[i][hEntrancey], HouseInfo[i][hEntrancez]))
{
if(PlayerInfo[playerid][pPhousekey] == i || HouseInfo[i][hLock] == 0)
{
SetPlayerInterior(playerid,HouseInfo[i][hInt]);
SetPlayerPos(playerid,HouseInfo[i][hExitx],HouseInfo[i][hExity],HouseInfo[i][hExitz]);
GameTextForPlayer(playerid, "~w~Willkommen zuhause", 5000, 1);
PlayerInfo[playerid][pInt] = HouseInfo[i][hInt];
PlayerInfo[playerid][pLocal] = i;
SetPlayerVirtualWorld(playerid,i);
return 1;
}
else
{
GameTextForPlayer(playerid, "~r~Geschlossen", 5000, 1);
return 1;
}
}
}//edit: kann es sein, das es nur nicht geht, weil alle das selbe interior haben? Aber bei einigen anderen Leuten geht das wahrscheinlich auch, oder net?
Ich hab was rausgefunden: wenn man bei einem haus steht, das das selbe interior hat, kommt man trotzdem beim ersten Haus mit diesem Interior raus, sollte ja nicht so sein oder?! -
Hallo leute.
Ich kauf ein Haus. Ich werde ins Haus gespawnt. Ich gehe raus. ABER ich lande beim Haus gegenüber?! Warum passiert das?
So geh ich raus:
if(PlayerToPoint(3, playerid,HouseInfo[i][hExitx], HouseInfo[i][hExity], HouseInfo[i][hExitz]))
{
SetPlayerInterior(playerid,0);
SetPlayerPos(playerid,HouseInfo[i][hEntrancex],HouseInfo[i][hEntrancey],HouseInfo[i][hEntrancez]);ich seh das nicht warum das nicht funzt.. es sind zwar die selben interiors (d.h. auch die selben ausgangspunkte), haben aber ne andere vw..
Hoffe jemand kann mir helfen.
MFG
-
Will ich mal sehen wenn du 20 Timer gleichzeitig drin hast

ich hab 18 nur bei ongamemodeinit und es laggt kein bisschen..
-
kann man dann nicht auslesen, wieviele datensätze es hat, und dann diese als MAX_TABLES verwenden?
-
ich meine, wie kann ich machen, das es halt nicht while(idx < 15) steht, sondern irgendwie while(idx < MAX_REIHEN_IN_MYSQL_TABELLE) oder so was in der art..
und das idx+1 ist dazu da, die richtige ID zu nehmen, da TankstellenInfo[0] in der Mysql tabelle ID 1 ist

MFG
-
Hallo zusammen!
Die, die jetzt fragen, warum ich einen neuen thread mache --> ganz einfach, weil es zwei verschiedene Sachen sind..
Also, zum thema zurück.
wie kann ich das besser machen? Also das statt idx < 15 etwas eindeutiges steht?
stock SaveTankstellen()
{
MySQLCheck();
new query[MAX_STRING];new idx;
while(idx < 15) //mit anzahl in mysqltabelle verändern
{
format(query, MAX_STRING, "UPDATE gasstation SET tBenzin=%d,tPosX=%f,tPosY=%f,tPosZ=%f WHERE ID=%d",TankstellenInfo[idx][tBenzin],TankstellenInfo[idx][tPosX],TankstellenInfo[idx][tPosY],TankstellenInfo[idx][tPosZ],idx+1);
mysql_query(query);
idx++;
}
return 1;
}MFG
-
Hauptsache du machst eine while schleife, aber zählst da eine variable hoch..
Es gibt Dinge, die werd ich nie verstehen
for ftw
die variable ist ja unabhängig von der while schleife o_O die ist nur dazu da, um die Arrays zu füllen..
Hi
Why machst du das eig net mit einer for-schleife? oO Geht doch genauso gut wie mit while^^
Probiers ma
MFG, Robdeflop®
hmm und wie soll ich das machen?
kann ich in der for schleife mysql_fetch_row(data) mitnehmen?Also
for(new i=0;i<sizeof(mysql_fetch_row(data));i++)
oder
for(new i=0;i<sizeof(mysql_num_rows());i++)
oder wie sonst?
edit: Es funktioniert nun mit dem while. Ich hab vergessen die Variable heraufzuzählen, also von TanktellenInfo[14] auf TankstellenInfo[15].. blöder fehler.. xD lustig ist aber das mir das im schlaf eingefallen ist
Aber es wäre schon noch gut zu wissen, wie das mit der forschleife geht.aber noch was..
stock SaveTankstellen()
{
MySQLCheck();
new query[MAX_STRING];new idx;
while(idx < 15) //mit anzahl in mysqltabelle verändern
{
format(query, MAX_STRING, "UPDATE gasstation SET tBenzin=%d,tPosX=%f,tPosY=%f,tPosZ=%f WHERE ID=%d",TankstellenInfo[idx][tBenzin],TankstellenInfo[idx][tPosX],TankstellenInfo[idx][tPosY],TankstellenInfo[idx][tPosZ],idx+1);
mysql_query(query);
idx++;
}
return 1;
}wie kann ich das besser machen? Also das statt idx < 15 etwas eindeutiges steht..
MFG
-
das wäre nice
es ist wirklich ein blödes problem, es passiert nur bei dem.. das ist sehr ärgerlich.. hat jemand ne andere variante, wie er die sachen rausliest?//edit:
ich habs jetzt mal so versucht.
stock LoadTankstellen()
{
MySQLCheck();
new idx;new data[256];
mysql_query("SELECT * FROM gasstation");
mysql_store_result();
if(mysql_num_rows() > 0)
{
while(mysql_fetch_row(data))
{
TankstellenInfo[idx][tID] = idx;
mysql_fetch_field("tBenzin",data);TankstellenInfo[idx][tBenzin] = strval(data);
mysql_fetch_field("tPosX",data);TankstellenInfo[idx][tPosX] = floatstr(data);
mysql_fetch_field("tPosY",data);TankstellenInfo[idx][tPosY] = floatstr(data);
mysql_fetch_field("tPosZ",data);TankstellensInfo[idx][tPosZ] = floatstr(data);
printf("ID: %d, Benzin: %d, PosX: %f, PosY: %f, PosZ: %f",TankstellenInfo[idx][tID],TankstellenInfo[idx][tGas],TankstellenInfo[idx][tPosX],TankstellenInfo[idx][tPosY],TankstellenInfo[idx][tPosZ]);
idx++;
}
}
mysql_free_result();
return 1;
}funzt aber trotzdem nicht. Hab die Tabelle auch schon neu gemacht, kein Erfolg.
-
ich glaub ich habs soweit.. es funzt aber nur, wenn ich mich herumbewege

-
Evt. könnte man eine Variable auf 1 setzen wenn der SPieler anfängt zu schießen und auf 0 wenn er aufhört.
und wo willst du das machen? ich hab jetzt einfach den gesamten code bei OnPlayerKeyStateChange..
Desweiteren würde ich dann abfragen ob er in der Range des Objectes ist.
ja, dann bringt mir die funktion PlayerAimToPoint gar nix?

-
joa, so klappts. Allerdings muss ich immer wieder drücken und dauerfeuer geht nicht
wie kann man das einstellen? Ausserdem kann ich von überall "schiessen", und es zählt runter 
-
und wie soll ich dann die arrays füllen?
-
hab ich ja auch.. aber dann bringts ja nix, ich muss ja noch schauen, ob der spieler auf das objekt schiesst..
if(GetPlayerWeapon(i) == 42)
{
for(new o=0;o<sizeof(feuer);o++)
{
new string[24],Float:X,Float:Y,Float:Z;
GetObjectPos(feuer[o], X, Y, Z);
if(PlayerAimToPoint(i,X,Y,Z,25))
{
feuerhealth[o]--;
format(string, sizeof(string),"%i/%i",feuerhealth[o],feuermaxhealth);
Update3DTextLabelText(feuertext[o],COLOR_WHITE,string);
if(feuerhealth[o] == 0)
{
DestroyObject(feuer[o]);
feuerhealth[o] = feuermaxhealth;
Delete3DTextLabel(feuertext[o]);
feueranzahl--;
if(feueranzahl == 0)
{
feueraktiv = 0;
SendFamilyMessage(4, COLOR_GREEN, "Das Feuer wurde geloescht!");
GivePlayerMoney(i, feuergeld);
KillTimer(feuertimer);
return 1;
}
}
}
}
} -
ja, die hab ich ja, ich les die koordinaten aus (GetObjectPos).. es geht auch alles wies soll, allerdings zählt er runter (hab da ein 3D text drüber), nur wenn ich schon in der Nähe stehe.. und auch wenn ich nicht mit einer waffe drauf schiesse.
-
hmm, der server läuft zwar, allerdings werden trotzdem nicht alle tankstellen geladen.. kann es sein, das es am plugin liegt? nicht oder? denn bei linux und windows, werden nur die ersten 14 tankstellen ausgelesen..
-
haste zufällig grad n'link zur hand? ich find nix in der suche.. gibts sonst keine "extra funktion" von samp selber, wo man das machen könnte?
-
jaja, sucker

grp nachmachen?