Hallöchen und guten Abend die Brotfische die grade noch online sind.
Ich habe ein verdammtes Problem mit dem Befehl /prison und /unprison, der wäre folgende: Der Server schmiert ab, wenn ich die Befehle in den Chat eingebe.
Dies habe ich allerdings nur auf meinem Gameserver von Samp4you,
wenn ich es ohne Samp4you (SAMP Server.exe) starte, funktionieren die Befehle wieder!
Von daher kann es nur ein MySQL Fehler sein.
Es fehlen Datenbankstrukturen und ich habe keine Ahnung, wie das gehen soll die einzufügen.
Desweiteren funktioniert /ban auch nicht.
Ohne die Befehle ist der Server wortwörtlich nutzlos, da ich keine Cheater bannen kann und niemanden ins Prison stecken kann, der Ärger macht
Das Script ist das International Roleplay Script, die Mysql Datenbank ist einfach nur scheiße.
Hier sind die Befehle:
if(strcmp("/prison", cmd, true) == 0)
{
if(IsPlayerConnected(playerid))
{
if(PlayerInfo[playerid][pAdmin] < 2 || PlayerInfo[playerid][pAdmin] == -1)
{
SendClientMessage(playerid, COLOR_KEINADMIN, "*** INFO: Dies ist ein Adminbefehl, du bist kein Admin.");
return 1;
}
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_BENUTZETEXT, "Benutze: /prison [SpielerName/ID] [Zeit(Minuten)] [Grund]");
return 1;
}
giveplayerid = ReturnUser(tmp);
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_BENUTZETEXT, "Benutze: /prison [SpielerName/ID] [Zeit(Minuten)] [Grund]");
return 1;
}
new time = strval(tmp);
if(time < 1) { SendClientMessage(playerid, COLOR_ERRORTEXT, " Prisonzeit muss mindestens eine Minute betragen !"); return 1; }
if(IsPlayerConnected(giveplayerid))
{
GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
GetPlayerName(playerid, sendername, sizeof(sendername));
new length = strlen(cmdtext);
while ((idx < length) && (cmdtext[idx] <= ' '))
{
idx++;
}
new offset = idx;
new result[84];
while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
{
result[idx - offset] = cmdtext[idx];
idx++;
}
result[idx - offset] = EOS;
if(!strlen(result))
{
SendClientMessage(playerid, COLOR_BENUTZETEXT, "Benutze: /prison [SpielerName/ID] [Zeit(Minuten)] [Grund]");
return 1;
}
PlayerInfo[giveplayerid][pJailed] = 2; PlayerInfo[giveplayerid][pLocal] = -1;
if(PlayerInfo[playerid][pAdmin] == -1){PlayerInfo[giveplayerid][pJailTime] += time * 60;}
else{PlayerInfo[giveplayerid][pJailTime] = time * 60;}
SetPlayerInterior(giveplayerid, 1); SetPlayerPos(giveplayerid, 2144.1943,1617.5361,993.6882); SetPlayerFacingAngle(giveplayerid,270); SetPlayerSkin(giveplayerid, 206); SetCameraBehindPlayer(giveplayerid);
ResetPlayerWeapon(giveplayerid); PlayerTied[giveplayerid] = 0;
PlayerInfo[giveplayerid][pGun1] = 0; PlayerInfo[giveplayerid][pGun2] = 0; PlayerInfo[giveplayerid][pGun3] = 0; PlayerInfo[giveplayerid][pGun4] = 0;
PlayerInfo[giveplayerid][pAmmo1] = 0; PlayerInfo[giveplayerid][pAmmo2] = 0; PlayerInfo[giveplayerid][pAmmo3] = 0; PlayerInfo[giveplayerid][pAmmo4] = 0;
PlayerTied[giveplayerid] = 0; PlayerCuffed[giveplayerid] = 0; PlayerCuffedTime[giveplayerid] = 0;
GameTextForPlayer(giveplayerid, "~w~Willkommen im ~n~~g~Prison", 5000, 3);
format(string, sizeof(string), "AdmCmd: %s wurde von %s für %d Minuten in das Prison teleportiert. Grund: %s", giveplayer, sendername, time, result);
SendAdminMessage(COLOR_LIGHTRED, -1, string);
SendClientMessage(giveplayerid, COLOR_LIGHTRED, string);
format(string,sizeof(string),"%s hat %s in das Prison getan Grund:%s (%d)",sendername,giveplayer, result,time);
EnterToLog("prison",string);
UserAkte(PlayerInfo[giveplayerid][pSQLID], string);
CopPrison(giveplayerid);
}
else
{
SendClientMessage(playerid, COLOR_ERRORTEXT, " Dieser Spieler ist offline und kann daher nicht ins Prison gesteckt werden!");
return 1;
}
}
return 1;
}
if(strcmp("/unprison", cmd, true) == 0)
{
if(IsPlayerConnected(playerid))
{
if(PlayerInfo[playerid][pAdmin] < 3)
{
SendClientMessage(playerid, COLOR_KEINADMIN, "*** INFO: Dies ist ein Adminbefehl, du bist kein Admin.");
return 1;
}
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_BENUTZETEXT, "Benutze: /unprison [SpielerName/ID] [Grund]");
return 1;
}
giveplayerid = ReturnUser(tmp);
new length = strlen(cmdtext);
while ((idx < length) && (cmdtext[idx] <= ' '))
{
idx++;
}
new offset = idx;
new result[84];
while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
{
result[idx - offset] = cmdtext[idx];
idx++;
}
result[idx - offset] = EOS;
if(!strlen(result))
{
SendClientMessage(playerid, COLOR_BENUTZETEXT, "Benutze: /unprison [SpielerName/ID] [Grund]");
return 1;
}
if(IsPlayerConnected(giveplayerid))
{
if(PlayerInfo[giveplayerid][pJailed] != 0)
{
GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
GetPlayerName(playerid, sendername, sizeof(sendername));
format(string, sizeof(string), "* Du hast %s aus dem Prison befreit.", giveplayer);
SendClientMessage(playerid, COLOR_LIGHTRED, string);
format(string, sizeof(string), "* Admin %s hat dich aus dem Prison befreit.", sendername);
SendClientMessage(giveplayerid, COLOR_LIGHTRED, string);
format(string,sizeof(string),"%s, wurde von %s aus dem Prison geholt, die Restzeit von dem Gefangenen war %d Min. Grund: %s",giveplayer, sendername, PlayerInfo[giveplayerid][pJailTime]/60, (result));
EnterToLog("unprison",string);
UserAkte(PlayerInfo[giveplayerid][pSQLID], string);
if(PlayerInfo[playerid][pAdmin] < 10)
{
format(string, sizeof(string), "AdmCmd: %s hat %s aus dem Prison geholt, restzeit %d min. Grund: %s", sendername, giveplayer, PlayerInfo[giveplayerid][pJailTime]/60, (result));
SendAdminMessage(COLOR_YELLOW, 1, string);
}
PlayerInfo[giveplayerid][pJailTime] = 0;
return 1;
}
else
{
SendClientMessage(playerid, COLOR_ERRORTEXT, " Dieser Spieler ist nicht im Prison !");
}
}
else
{
SendClientMessage(playerid, COLOR_ERRORTEXT, " Dieser Spieler ist offline !");
return 1;
}
}
return 1;
}
if(strcmp("/ban", cmd, true) == 0)
{
if(IsPlayerConnected(playerid))
{
print("1");
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_BENUTZETEXT, "Benutze: /ban [SpielerName/ID] [Grund]");
print("2");
return 1;
}
giveplayerid = ReturnUser(tmp);
if(IsPlayerConnected(giveplayerid))
{
if(PlayerInfo[playerid][pAdmin] >= 2)
{
print("3");
GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
GetPlayerName(playerid, sendername, sizeof(sendername));
new length = strlen(cmdtext);
while ((idx < length) && (cmdtext[idx] <= ' '))
{
idx++;
}
new offset = idx;
new result[84];
while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
{
result[idx - offset] = cmdtext[idx];
idx++;
}
result[idx - offset] = EOS;
if(!strlen(result))
{
SendClientMessage(playerid, COLOR_BENUTZETEXT, "Benutze: /ban [SpielerName/ID] [Grund]");
return 1;
}
if(strfind(result, "'", true) != -1)
{
SendClientMessage(playerid, COLOR_ERRORTEXT, " Kein Apostroph(') !");
return 1;
}
print("4");
if(PlayerInfo[giveplayerid][pSQLID] == 1 || PlayerInfo[giveplayerid][pSQLID] == 2 && PlayerInfo[playerid][pSQLID] != 1)
{
format(string, sizeof(string), "AdmCmd: %s wurde von %s gebannt. Grund: %s", giveplayer, sendername, (result));
SendClientMessage(playerid, COLOR_LIGHTRED, string);
format(string, sizeof(string), "* %s hat versucht dich zu Bannen, er wurde aus Sicherheits Gründen gekickt Grund: %s", sendername, (result));
SendClientMessage(giveplayerid, COLOR_LIGHTRED, string);
Kick(playerid);
return 1;
}
else
{
print("5");
new year, month,day;
getdate(year, month, day);
format(string, sizeof(string), "AdmCmd: %s wurde von %s gebannt. Grund: %s", giveplayer, sendername, (result));
SendAdminMessage(COLOR_LIGHTRED, -1, string);
SendClientMessage(giveplayerid,COLOR_LIGHTRED, string);
format(string,sizeof(string),"%s, gebannt von: %s ,Grund: %s.", giveplayer, sendername,(result));
EnterToLog("ban",string);
UserAkte(PlayerInfo[giveplayerid][pSQLID], string);
SendClientMessage(giveplayerid,COLOR_GRAD3, "Du wurdest von einem Admin gebannt, sollte es sich hierbei um ein Missverständnis handeln,");
SendClientMessage(giveplayerid,COLOR_GRAD3, "erstelle hier von einen Screenshot (F8) und erstelle im Forum einen Entbannantrag.");
BanSelfmade(giveplayerid, playerid, (result), -1, 0);
}
return 1;
}
else
{
SendClientMessage(playerid, COLOR_KEINADMIN, "*** INFO: Dies ist ein Adminbefehl, du bist kein Admin.");
return 1;
}
}
else
{
SendClientMessage(playerid, COLOR_ERRORTEXT, " Dieser Spieler ist Offline !");
}
}
return 1;
}
Es wäre sehr nett, wenn mir jemand per Teamviewer oder gar direkt im Forum helfen kann.
Mit freundlichen Grüßen
Jayden Kero