Beiträge von Kasakow
-
-
Guten Tag,
Mein Name lautet MrPawn.
Und war habe ich ein Problem mit meinem Straßenreiniger Job
public OnPlayerEnterCheckpoint(playerid)
{
if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER && !strcmp(SpawnCar_Type[GetPlayerVehicleID(playerid)], "Straßenreinigung", true))
{
print(".");
DisablePlayerCheckpoint(playerid);
DestroyDynamicObject(MuellObject[playerid]);
new Float:Abstand = 500.0, Object = INVALID_OBJECT_ID;
for(new i=0;i<MAX_RUBBISH;i++)
{
print("..");
if(SRubbishInfo[i][RposX] == 0.0)continue;
if(SRubbishInfo[i][RubbishObject] == INVALID_OBJECT_ID)continue;
if(GetVehicleDistanceFromPoint(GetPlayerVehicleID(playerid), SRubbishInfo[i][RposX], SRubbishInfo[i][RposY], SRubbishInfo[i][RposZ]) < Abstand){
print("...");
Abstand = GetVehicleDistanceFromPoint(GetPlayerVehicleID(playerid), SRubbishInfo[i][RposX], SRubbishInfo[i][RposY], SRubbishInfo[i][RposZ]);
Object = i;
}
if(Object != INVALID_OBJECT_ID) {
SRubbishInfo[i][RubbishObject] = Object;
print("....");
MuellObject[playerid] = SRubbishInfo[i][RubbishObject];
return SetPlayerCheckpoint(playerid, SRubbishInfo[i][RposX], SRubbishInfo[i][RposY], SRubbishInfo[i][RposZ], 4.5);
}
}
return 1;
}
return 1;
}
Wenn man durch den Müll ( Checkpoint ) durchfährt, dann soll ein neuer kommen. Tut es aber nicht.
Das Problem bei der ganzen sachen, ist: Jeder bereich wird aufgerufen, habs ja mit "." debuggen lassen
-
Das weiß ich, ich habe aber keine lust das hinzuschreiben

-
-
Guten Tag,
Mein Name lautet MrPawn.
Und zwar habe ich einen Fehler, bei /lastdriver [vehicleid]
Also per OnPlayerStateChange wird das ganze betrieben:new vehicleid = GetPlayerVehicleID(playerid);
format(LastDriver[vehicleid], 24, "%s", PlayerInfo[playerid][pName]);Das geile ist es geht ja, aber das vermischt sich mit den anderen fahrzeugen mit der ID
Ich habe aktuell 4 Sweeper auf dem Server stehen.
Ich steige in das Fahrzeug mit der ID 1
Gebe /lastdriver [1] ein.
Dann steht da, "Adminbefehl: Der letzte Fahrer des Fahrzeuges ist USER.
Alles gut, aber wenn ich dann id 2,3,4 abfrage wo ich nicht herinnen war, wird auch was getahn, und zwar immer 1 zeichen entnommen.1ID(Herinnen gesessen) = "USER"
2ID(None)="SER"
3ID(None)="ER
4ID(None)="R"
Also er zäht hoch und bei den zeichen runter
COMMAND:lastdriver(playerid, params[])
{
if(!IsPlayerConnected(playerid))return 1;
if(PlayerInfo[playerid][Eingeloggt] == false)return SendClientMessage(playerid, GRAU, "Du bist nicht eingeloggt!");
if(!IsPlayerAnAdmin(playerid, 1))return SendClientMessage(playerid, GRAU, "Du bist kein Teammitglied / Du besitzt nicht die Rechte für diesen Befehl!");
if(GetPVarInt(playerid, "Aduty") == 0)return SendClientMessage(playerid, ROT, "Du musst als Administrator im Dienst sein, um befehle zu nutzen");
new tmp_vehicleid, string[128];
if(sscanf(params, "i", tmp_vehicleid))return SendClientMessage(playerid, WRONGCMD, "BENUTZE: /lastdriver [vehicleid]");
if(!IsValidVehicle(tmp_vehicleid))return SendClientMessage(playerid, ROT, "FEHLER: {FFFFFF}Diese FahrzeugID Existiert nicht!");
if(strlen(LastDriver[tmp_vehicleid]) > 0) {
format(string, sizeof(string), "AdminBefehl: Der letzte Fahrer des Fahrzeuges ist %s"
,LastDriver[tmp_vehicleid]);
SendClientMessage(playerid,GRUEN,string); }
else {
SendClientMessage(playerid, GRUEN, "AdminBefehl: Es gibt keinen letzen Fahrer!");
}
return 1;
}Mit freundlichen Grüßen,
MrPawn
-
Guten Tag,
Mein Name lautet MrPawn.
Und zwar denke ich bin ich zu müde um noch gescheit zu denken.Und zwar geht es um mein Alters System:
if(dialogid == DIALOG_ALTER)
{
if(!response) {
ShowPlayerMenu(playerid, "Register");
mysql_real_escape_string(PlayerInfo[playerid][pName], PlayerInfo[playerid][pName]);
new query[154];
format(query, sizeof(query), "DELETE FROM `Benutzerkonten` WHERE `Benutzername` = '%s'", PlayerInfo[playerid][pName]);
mysql_query(query);
}
if(response) {
new J,M,T;
getdate(J,M,T);
new DatumInfo[3][20], string[128];
split(inputtext,DatumInfo,'.');
if(!strlen(inputtext))
{
SendClientMessage(playerid, ROT, "Falsches Format (TAG.MONAT.JAHR)");
ShowPlayerMenu(playerid, "Alter");
}
if(strlen(inputtext) > 10)
{
SendClientMessage(playerid, ROT, "Falsches Format (TAG.MONAT.JAHR)");
ShowPlayerMenu(playerid, "Alter");
return 1;
}
if(!IsValidDate(strval(DatumInfo[0]),strval(DatumInfo[1]),strval(DatumInfo[2])))
{
SendClientMessage(playerid, ROT, "Falsches Format (TAG.MONAT.JAHR)");
ShowPlayerMenu(playerid, "Alter");
return 1;
}
if(J - strval(DatumInfo[2]) > 100 || strval(DatumInfo[2]) < 1 || strval(DatumInfo[2]) >= J)
{
SendClientMessage(playerid, ROT, "Falsches Format (TAG.MONAT.JAHR)");
ShowPlayerMenu(playerid, "Alter");
return 1;
}
new check = J - strval(DatumInfo[2]);
if(check == J)
{
SendClientMessage(playerid, ROT, "Falsches Format (TAG.MONAT.JAHR)");
ShowPlayerMenu(playerid, "Alter");
return 1;
}
if(strval(DatumInfo[1]) > M)
{
check -= 1;
}
else if(strval(DatumInfo[1]) == M && strval(DatumInfo[0]) > T)
{
check -= 1;
}
if(check < 0 || check > 65)
{
SendClientMessage(playerid, ROT, "Falsches Format (TAG.MONAT.JAHR)");
ShowPlayerMenu(playerid, "Alter");
return 1;
}
format(string, sizeof(string), "Ok, du bist also %i Jahre Jung/Alt.", check);
SendClientMessage(playerid, GRAU, string);
ShowPlayerMenu(playerid, "Geschlecht");
}
}Dieser Quelltext wird garnicht erst aufgerufen (noch nicht geprintet)
Also #ERROS werden schon angezeigt, aber ingame passiert da dann nichts!
Wenn ich split garnicht im Script habe, dann zeig er mir aber keinen Error an. Sobald ich Split einfüge kommt der Fehler:Codeerror 025: function heading differs from prototype Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase 1 Error.stock split(const strsrc[], strdest[][], delimiter)
{
new i, li;
new aNum;
new len;
while(i <= strlen(strsrc))
{
if(strsrc[i] == delimiter || i == strlen(strsrc))
{
len = strmid(strdest[aNum], strsrc, li, i, 128);
strdest[aNum][len] = 0;
li = i+1;
aNum++;
}
i++;
}
return 1;
}EDIT: Es lag an dem MySQL Include

Da war auch ein Split drinne, leider kein nützliches für mich
-
Also diese Datei gehört so zu R5 ob sie zu R6 weis ich leider nicht.
Zeig mal deine Server.cfg ( Screen ) -
Das muss ins hauptverzeichnis des servers!
-
Erstmal eine Version fuer MySQL veröffentlichen
Den Rest schreib ich dir Später per PN -
Ich finde dieses System garnicht mal so Schlecht

6/10
-
Poste mal den dazugehörigen query sieht danach aus als ob dein ein ' hinter der id vergessen hast
Hab ihm schon geholfen, die string länge war anscheinend zu klein. -
-
Bitte zeige uns doch einen QuellCode

(PS: Du kannst mich auch in Skype,Facebook um hilfe beten
) -
Benutze SetPlayerAttachedObject
Kannst auch gerne meinen Editor dafür haben
command(editx, playerid, params[])
{
new id, Float:x, Float:y, Float:z;
if(sscanf(params, "i", id))return SendClientMessage(playerid, Weiß, "Befehl: /editx [Objekt - ID]");
SetPlayerAttachedObject(playerid, 0, id, 6, x, y, z, 0.0, 0.0, 0.0, 1, 1, 1);
EditAttachedObject(playerid, 0);
return 1;
}public OnPlayerEditAttachedObject(playerid, response, index, modelid, boneid, Float:fOffsetX, Float:fOffsetY, Float:fOffsetZ, Float:fRotX, Float:fRotY, Float:fRotZ, Float:fScaleX, Float:fScaleY, Float:fScaleZ)
{
new File:hFile = fopen("/file.txt", io_append), string[420];
if(response && hFile) {
format(string, sizeof(string), "SetPlayerAttachedObject(playerid, 0, %i, 0, %f, %f, %f, %f, %f, %f, %f, %f, %f);", modelid, fOffsetX, fOffsetY, fOffsetZ, fRotX, fRotY, fRotZ, fScaleX, fScaleY, fScaleZ);
fwrite(hFile, string);
fclose(hFile);
}
else if((!response || !hFile)) {
RemovePlayerAttachedObject(playerid, 0);
}
return 1;
} -
Ist mir ja garnicht aufgefallen

Dankesehr, klappt nun wunderbar
-
Guten Tag,
Mein Name lautet MrPawn.
Und zwar habe ich mein Script von Dini auf MySQL umgeschrieben (War ein etwas älteres & kleineres Script).
Aber jetzt wenn ich gesperrt bin und auf den Server connecte kommt der Dialog nicht mehr.if(mysql_CheckIP(playerid) || mysql_CheckBan(playerid))return 1;
Das lasse ich bei OnPlayerConnect abfragen!
Das soll bewirken das der Login Dialog nicht kommt.Das habe ich dann bei OnPlayerRequestClass
if(mysql_CheckIP(playerid) == 1)
{
new string[128];
format(string, sizeof(string), "* Der IP Gesperrte Spieler %s hat versucht sich einzuloggen!",GetName(playerid));
SendAdminMessage(playerid, HellRot, string);
SendClientMessage(playerid, Rot, "Deine IP wurde Gesperrt. Du wirst nun gekickt!");
Kick_Ex(playerid);
return 1;
}
if(mysql_CheckIP(playerid) == 1)
{
new string[128];
format(string, sizeof(string), "* Der Gesperrte Spieler %s hat versucht sich einzuloggen!",GetName(playerid));
SendAdminMessage(playerid,HellRot, string);
SendClientMessage(playerid, Rot, "Dein Account wurde Gesperrt. Du wirst nun gekickt!");
Kick_Ex(playerid);
return 1;
}
//BanAbfrage
stock mysql_CheckBan(playerid) {
if(!mysql_CheckAccount(playerid))return -1;
sStats[playerid][sGesperrt] = mysql_GetInt("acc", "Gesperrt", "Name", GetName(playerid));
return sStats[playerid][sGesperrt];
}
//CheckIP
stock mysql_CheckIP(playerid) {
new query[256], result;
mysql_real_escape_string(GetIP(playerid), GetIP(playerid));
format(query, sizeof(query), "SELECT * FROM ip WHERE BIP = '%s'", GetIP(playerid));
mysql_query(query);
mysql_store_result();
if(mysql_num_rows()){result = true;}
else result = false;
mysql_free_result();
return bool:result;
}Aber das lustige ist, mir wird nichtmal gesagt das ich gesperrt bin

Hier mal ein Paar Screens zur übersicht.Datenbank:

Ingame:

Wäre nett, wenn mir einer Helfen könnte

Mit freundlichen Grüßen,
MrPawn
-
Your are banned.. kommt auch wenn du keine Verbindung aufbauen ,sowie du schlechtes Internet hast.
Ich habe dies mal ausprobiert, in dem ich meinen eigenen server mit "DoS" überflutet habe
Dieser Fehler kann genau so gut auftreten, sobald der Server schlechte anbindung hat. -
Habs behoben

Aktueller Code:
public OnPlayerSpawn(playerid)
{
if(uInfo[playerid][sTod] == 1) {
SpawnEx(playerid);
}
return 1;
}public OnPlayerDeath(playerid, killerid, reason)
{
uInfo[playerid][sTod] = 1;
return 1;
}//Spawn System
stock SpawnEx(playerid) {
uInfo[playerid][sTod] = 0;
if(!strcmp(uInfo[playerid][sArena], "Keine", true)) {
SetCameraBehindPlayer(playerid);
SetSpawnInfo(playerid, 0, uInfo[playerid][sSkin], 1310.2816, -1369.6655, 13.5655, 181.3278, 0, 0, 0, 0, 0, 0);
SpawnPlayer(playerid),SetPlayerInterior(playerid, 0), SetPlayerVirtualWorld(playerid, 0),TogglePlayerControllable(playerid, true);
SetPlayerPos(playerid, 1310.2816, -1369.6655, 13.5655);
SetPlayerSkin(playerid, uInfo[playerid][sSkin]);
}
return 1;
} -
Ich habe
ForceClassSelection
nirgentwo stehen
Was sollte ich am besten machen -
//Spawn System
stock SpawnEx(playerid) {
uInfo[playerid][sTod] = 0;
if(!strcmp(uInfo[playerid][sArena], "Keine", true)) {
SetCameraBehindPlayer(playerid);
SetSpawnInfo(playerid, 0, uInfo[playerid][sSkin], 1310.2816, -1369.6655, 13.5655, 181.3278, 0, 0, 0, 0, 0, 0);
SpawnPlayer(playerid),SetPlayerInterior(playerid, 0), SetPlayerVirtualWorld(playerid, 0),TogglePlayerControllable(playerid, true);
}
return 1;
}Ehm also es ist so:
Ich mache /test dann sterbe ich.
Ich komme zu den Pfeiltasten & Spawnbutton, und wenn ich dann auf Spawn klicke, dann kommt mir die Nachricht .
Also OnPlayerSpawn wird erst nach dem Spawnbutton ausgeführt!