Wenn der Fehler vorkommt, was musst du machen, bzw. was machst du, damit es wieder geht?
Beiträge von Jeffry
-
-
Bei sizeof string dort fehlen die Klammern
Die braucht man nicht unbedingt. Es geht auch ohne.
Zwecks Problem 1: Was xCurry gesagt hat.
Zwecks Problem 2: Hast du das getestet? Weil laut Code ist das nicht der Fall. -
Kannst du den Code bitte posten? Ich suche ihn mir nicht irgendwo zusammen, und nachher ist die Hälfte schon nicht mehr so wie zu damaligem Stand.
-
Du lädst es dir runter, fügst das Plugin (dll = Windows / so = Linux) in den plugins Ordner ein (falls nicht vorhanden, erstellen) und trägst das Plugin bei "plugins" in der server.cfg ein (crashdetect bei Windows / crashdetect.so bei Linux).
-
Unter den Includes:
new lastDamage[MAX_PLAYERS];Bei OnPlayerTakeDamage:
if(issuerid != INVALID_PLAYER_ID) lastDamage[playerid] = gettime();Beim /leave Befehl:
if(lastDamage[playerid] + 4 > gettime()) return SendClientMessage(playerid, 0xFF0000FF, "Error: Du bist im Kampf!"); -
Spoiler anzeigen stock StartMotor(playerid)
{
if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, 0x9B0000FF, "Du sitzt in keinem Fahrzeug, um den Motor zu starten!");
if(GetPlayerVehicleSeat(playerid) != 0) return SendClientMessage(playerid, 0x9B0000FF, "Nur der Fahrer kann den Motor starten!");
new car = GetPlayerVehicleID(playerid),m = GetVehicleModel(car);
if(m == 509 || m == 481 || m == 510) return SendClientMessage(playerid, 0x9B0000FF, "Du sitzt auf einem Fahrrad, das hat keinen Motor!");
else if (Motor[car] == false)
{
GetVehicleParamsEx(car,engine,lights,alarm,doors,bonnet,boot,objective);
SetVehicleParamsEx(car,VEHICLE_PARAMS_ON,lights,alarm,doors,bonnet,boot,objective);
Motor[car] = true;
SendClientMessage(playerid, 0x4B94FFFF, "{1AADD6}Gedanke: {F2F2F2}Sie drehen den Zündschlüssel, und schalten den Motor {36D61A}an!");
return 1;
}
else
{
GetVehicleParamsEx(car,engine,lights,alarm,doors,bonnet,boot,objective);
SetVehicleParamsEx(car,VEHICLE_PARAMS_OFF,lights,alarm,doors,bonnet,boot,objective);
Motor[car] = false;
SendClientMessage(playerid, 0x4B94FFFF, "{1AADD6}Gedanke: {F2F2F2}Sie drehen den Zündschlüssel, und schalten den Motor {E83A3D}aus!");
return 1;
}
return 1;
}Spoiler anzeigen stock LichtAn(playerid)
{
if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, 0x9B0000FF, "Du sitzt in keinem Fahrzeug, um das Licht einzuschalten!");
if(GetPlayerVehicleSeat(playerid) != 0) return SendClientMessage(playerid, 0x9B0000FF, "Nur der Fahrer kann das Licht einschalten!");
new car = GetPlayerVehicleID(playerid),m = GetVehicleModel(car);
printf("playerid: %d / Vehicle: %d / Model: %d", playerid, car, m);
if(m == 417 || 425 || m == 447 || m == 464 || m == 465 || m == 469 || m == 487 || m == 488 || m == 497 || m == 501 || m == 548 || m == 563 || m == 430 || m == 446 || m == 452 || m == 453 || m == 454 || m == 472 || m == 473 || m == 484 || m == 493 || m == 595 ||
m == 460 || m == 476 || m == 511 || m == 512 || m == 513 || m == 519 || m == 520 || m == 553 || m == 577 || m == 592 || m == 593) return SendClientMessage(playerid, 0x9B0000FF, "Du sitzt in einem Fahrzeug,Boot,Flugzeug, welches kein Licht hat!");
if (Licht[car] == false)
{
GetVehicleParamsEx(car,engine,lights,alarm,doors,bonnet,boot,objective);
SetVehicleParamsEx(car,engine,VEHICLE_PARAMS_ON,alarm,doors,bonnet,boot,objective);
Licht[car] = true;
SendClientMessage(playerid, 0x4B94FFFF, "{1AADD6}Gedanke: {F2F2F2}Sie drehen am Schalter, und schalten das Licht {36D61A}an!");
return 1;
}
else
{
GetVehicleParamsEx(car,engine,lights,alarm,doors,bonnet,boot,objective);
SetVehicleParamsEx(car,engine,VEHICLE_PARAMS_OFF,alarm,doors,bonnet,boot,objective);
Licht[car] = false;
SendClientMessage(playerid, 0x4B94FFFF, "{1AADD6}Gedanke: {F2F2F2}Sie drehen am Schalter, und schalten das Licht {E83A3D}aus!");
return 1;
}
return 1;
}Versuche es so. Wenn es nicht geht, poste was beim Licht einschalten im Server Log steht.
-
Funkt das noch? bzw. hat jemand die a_mysql
Prinzipiell ja, allerdings ist es empfohlen, die neueren Versionen, bestmöglichst natürlich die R39-3 (Stand heute) zu nutzen.
Ich hab dir trotzdem mal die MySQL R5 Dateien angehängt. Das dürften die richtigen sein, habe die mir mal zusammengesammelt aus einigen anderen Links. -
Laut Log vorrangig ja.
-
-
Versuche es so:
public OnPlayerSpawn(playerid)
{
new ppname[MAX_PLAYER_NAME],file[250],clanname3d[50];
GetPlayerName(playerid,ppname,sizeof(ppname));
format(file,sizeof(file),"/Clans/%s.cfg",(ppname));
if(dini_Exists(file))
{
format(clanname[playerid], 32, dini_Get(file,"Clan"));
clanstate[playerid] = dini_Int(file,"Rang");
if(labels[playerid] != Text3D:-1) Delete3DTextLabel(labels[playerid]);
labels[playerid] = Text3D:-1;
if(clanstate[playerid] == 3)
{
format(clanname3d,sizeof(clanname3d),"%s {FF0000} Leader {EEEEEE}",clanname[playerid]);
}
else if(clanstate[playerid] == 1)
{
format(clanname3d,sizeof(clanname3d),"%s {FF0000} Member {EEEEEE}",clanname[playerid]);
}
labels[playerid] = Create3DTextLabel(clanname3d,-1,30.0,40.0,50.0,40.0,0);
Attach3DTextLabelToPlayer(labels[playerid], playerid, 0.0, 0.0, 0.5);
}
new String[128],Dm[9];
for(new i = 0; MAX_PLAYERS > i; i++)
{
for(new ii = 0; 9 > ii; ii++)
{
if(DM[i][ii] == 1)
{
Dm[ii]++;
}
}
}
SetPlayerSkin(playerid,PlayerInfo[playerid][pSkin]);
format(String,sizeof(String),"/Deagle: %d - /Dm: %d - /1o1: %d - /Sniper: %d - /Teamdm: %d - /Insel: %d - Kein Modus: %d",Dm[0],Dm[1],Dm[2],Dm[3],Dm[4],Dm[5],Dm[6],Dm[8]);
TextDrawSetString(Textdraw[3],String);
if(DM[playerid][8] == 1)
{
SetPlayerInterior(playerid,0);
SetPlayerVirtualWorld(playerid,0);
}
else if(DM[playerid][0] == 1)
{
new rand = random(4);
SetPlayerInterior(playerid,1);
GivePlayerWeapon(playerid,24,500);
SetPlayerPos(playerid,RandomSpawn[rand][rX],RandomSpawn[rand][rY],RandomSpawn[rand][rZ]);
SetPlayerFacingAngle(playerid,RandomSpawn[rand][rA]);
}
else if(DM[playerid][1] == 1)
{
new rand = 4+random(4);
SetPlayerInterior(playerid,10);
GivePlayerWeapon(playerid,24,500);
GivePlayerWeapon(playerid,25,500);
GivePlayerWeapon(playerid,34,500);
SetPlayerPos(playerid,RandomSpawn[rand][rX],RandomSpawn[rand][rY],RandomSpawn[rand][rZ]);
SetPlayerFacingAngle(playerid,RandomSpawn[rand][rA]);
}
else if(DM[playerid][2] == 1)
{
SetPlayerInterior(playerid,0);
GivePlayerWeapon(playerid,24,1337);
SetPlayerHealth(playerid, 100);
SetPlayerArmour(playerid, 100);
SetPlayerPos(playerid,-2223.0037,1217.4150,87.2109);
SetPlayerFacingAngle(playerid,0);
for(new i = 0; 4 > i;i++)
{
if(one[playerid][i] == 1)
{
SetPlayerVirtualWorld(playerid,i+1);
}
}
}
else if(DM[playerid][5] != 0)
{
new rand = 12+random(6);
SetPlayerInterior(playerid,3);
GivePlayerWeapon(playerid,24,1337);
GivePlayerWeapon(playerid,25,1337);
SetPlayerPos(playerid,RandomSpawn[rand][rX],RandomSpawn[rand][rY],RandomSpawn[rand][rZ]);
SetPlayerFacingAngle(playerid,RandomSpawn[rand][rA]);
}
else if(DM[playerid][4] == 1)
{
new rand = 8+random(4);
SetPlayerInterior(playerid,0);
GivePlayerWeapon(playerid,34,500);
SetPlayerPos(playerid,RandomSpawn[rand][rX],RandomSpawn[rand][rY],RandomSpawn[rand][rZ]);
SetPlayerFacingAngle(playerid,RandomSpawn[rand][rA]);
}
else if(DM[playerid][6] == 1)
{
new rand = 18+random(4);
SetPlayerInterior(playerid,0);
GivePlayerWeapon(playerid,24,250);
GivePlayerWeapon(playerid,25,250);
SetPlayerPos(playerid,RandomSpawn[rand][rX],RandomSpawn[rand][rY],RandomSpawn[rand][rZ]);
SetPlayerFacingAngle(playerid,RandomSpawn[rand][rA]);
}
if(inDuel[playerid] > 0)
{
GivePlayerWeapon(playerid, 24, 1337);
GivePlayerWeapon(playerid, 25, 1337);
GivePlayerWeapon(playerid, 33, 1337);
SetPlayerVirtualWorld(playerid, inDuel[playerid]);
SetPlayerInterior(playerid, 6);
SetPlayerPos(playerid, 774.213989,-48.924297,1000.585937);
}
return 1;
} -
Ja, dann schreib anstatt localhost: "127.0.0.1"
-
Nutze beim Verbindungsaufbau im Code anstatt "127.0.0.1" den "localhost", bzw. andersherum.
-
Welche Version des MySQL Plugins verwendest du denn?
Falls du es nicht weißt, schaue in die /pawno/includes/mysql.inc bzw. a_mysql.inc und schaue dort ganz oben nach, welche Version da drin steht.Die mysql_static.so findest du in den entsprechenden Downloadpaketen, sofern vorhanden.
-
Aber das machst du doch schon. Du speicherst doch nicht alle auf einmal, sondern es werden X Queries gesendet.
Die Verschiebung, denke ich, hängt damit zusammen, dass du im Array eben bei 0 anfängst, und in der Tabelle bei 1. Am einfachsten, ohne Code zu ändern (dann musst du die Änderung von zuvor wieder rückgängig machen), wäre es, wenn du einfach den AUTO_INCREMENT in der Tabelle bei 0 anfangen lässt, anstatt bei 1 (musst eben alle Fraktionen nochmal erstellen).
Sofern das das Problem ist. -
Das kannst du mit einem einfachen Trick beheben. Lösche deine User-Files alle (sonst klappt es nicht).
Dann füge bei deinem Register-Stock (als dort wo die User-Datei nach dem registrieren angelegt wird) vor allen Stats (also praktisch als ersten Stat, sodass nicht mehr das Passwort als erstes da steht), das hier ein:
dini_Set(Spielerdatei, "DUMMY", "DUMMY");Dann macht es nichts mehr aus, wenn das Zeichen dort steht, da DUMMY ohnehin nicht verwendet wird.
-
Poste bitte den Code, ohne den können wir dir nicht helfen.
-
Es ging doch um den Spawn nach dem Duel, was hat das mit den DM Zonen zu tun?
An sich kann der Code, den du bei OnPlayerSpawn eingefügt hast so einen Fehler nicht hervorrufen, das würde keinen Sinn machen. Da musst du etwas anderes verbogen haben, dass sich das auf die DM Zonen (!= Duel?) auswirkt.Möglicherweise setzt du auch die Variablen von den DM Zonen oder dem Duel nicht richtig (ggf. zurück). Poste einfach mal dein ganzes OnPlayerSpawn, dann kann man das mal debuggen, was da eigentlich vor sich geht.
-
Das machst du doch durch die WHERE Anweisung. Ich weiß nicht ganz worauf du hinaus willst.
Laden kannst du ebenfalls auch nur eine Zeile, indem du das WHERE id = xxx ein dein SELECT-Statement packst. Prinzipiell möglich, nur wie gesagt, weiß ich nicht warum man das machen sollte. -
//...
}else if(DM[playerid][3] ==1){
SetPlayerInterior(playerid,0);
GivePlayerWeapon(playerid,24,1337);
GivePlayerWeapon(playerid,25,1337);
GivePlayerWeapon(playerid,33,1337);
SetPlayerPos(playerid, 774.213989,-48.924297,1000.585937);
SetPlayerVirtualWorld(playerid, playerid+10);
}
//Hier einfügen:
if(inDuel[playerid] > 0)
{
GivePlayerWeapon(playerid, 24, 1337);
GivePlayerWeapon(playerid, 25, 1337);
GivePlayerWeapon(playerid, 33, 1337);
SetPlayerVirtualWorld(playerid, inDuel[playerid]);
SetPlayerInterior(playerid, 6);
SetPlayerPos(playerid, 774.213989,-48.924297,1000.585937);
}
return 1;
}
Versuche es mal, indem du das inDuel-Zeug ganz unten hinschreibst.
Schau mal ob es dann klappt. Zuvor scheint mir das den Klammern zufolge möglicherweise nicht an der richtigen Stelle zu sein. -
Poste bitte mal den ganzes OnPlayerSpawn.