Aber könnte es nicht am Plugin liegen ? vlt mal neu in den Ordner Ziehen von der RaR etc.
Nein, diese Warnung liegt nicht am Plugin. ![]()
PS: Bitte mache keine Vollzitate, die machen keinen Sinn. Danke!
Aber könnte es nicht am Plugin liegen ? vlt mal neu in den Ordner Ziehen von der RaR etc.
Nein, diese Warnung liegt nicht am Plugin. ![]()
PS: Bitte mache keine Vollzitate, die machen keinen Sinn. Danke!
Nyu_x3:
Diese Warnung kommt, wenn kein Wert mit einem return zurückgegeben wird, obwohl einer erwartet wird.
Beispiel:
ocmd:hallowelt(playerid,params[])
{
SendClientMessage(playerid,0xFFFFFFFF,"Hallo Welt");
}
Das würde eine 209-er Warnung geben.
So wäre es richtig:
ocmd:hallowelt(playerid,params[])
{
SendClientMessage(playerid,0xFFFFFFFF,"Hallo Welt");
return 1;
}
"should return a value" deutet immer auf ein fehlendes return hin. ![]()
ich hab sscanf ja^^
Stock Funktion im Code oder das Plugin?
Setze vor die letzte } - Klammer in OnPlayerSpawn (ganz unten) ein
return 1;
Dass es so aussieht:
return 1;
}
Compile = amx im Script-Ordner
Compile & Run = amx im Script-Ordner und in C:\
aber auch wenn ich z.B. im Spiel /givemoney 0 10 eingebe, wird mir die SendClientMessage ausgegeben.
Bei anderen Befehlen funktioniert alles einwandfrei.
Wenn du das sscanf Plugin nicht verwendest, schreibe es so:
ocmd:givemoney(playerid,params[])
{
new receiverid, moneyvalue;
if(sscanf(params,"ii",receiverid,moneyvalue))return SendClientMessage(playerid,COLOR_RED,"/givemoney [playerid] [Wert]");
GivePlayerMoney(receiverid,moneyvalue);
return SendClientMessage(playerid,COLOR_GREEN,"Geld erfolgreich gegeben.");
}
Das return 1 in Zeile 519 kannst du entfernen, da sowohl im if Teil als auch im else Teil eines steht, sprich das dritte (519) wird nie erreicht.
Oder du entfernst die beiden in 495 und 517.
%d und %i stehen für ganze Zahlen (Integer). Welches du verwendest ist völlig egal.
http://wiki.sa-mp.com/wiki/Format
Kannst du schon machen, aber das macht keinen Sinn, da die Datei dann jedes mal geöffnet, ausgelesen, und wieder geschlossen werden muss. Das geht auf die Ressourcen und laggt irgendwann.
Mit den PVars lädst du es ja einmal (beim Login) und speicherst es beim ausloggen wieder, sprich du hast nur zwei mal Dateibewegungen.
Kannst du machen, solltest du aber nicht.
Geht es so?
mysql_function_query(sqlconnection, "SELECT text FROM motd", true, "LoadMotD","");
Wenn nicht, poste bitte den MySQL Log, nachdem du den MySQL Debug Modus eingeschaltet hast.
Wie du das machst steht hier: Tipps: Scripting-Probleme richtig erklären (Kapitel 1.4)
Cheevy.Shakur:
for(new slot=0;slot<MAX_PLAYER_VEHICLES;slot++)
{
if(veh == PrivateVehicle[playerid][slot][vehID])
{
if(vehicleid != PrivateVehicle[playerid][slot][vehID]) continue;
GetVehiclePos(veh, pos[0], pos[1], pos[2]);
GetVehicleParamsEx(PrivateVehicle[playerid][slot][vehID], engine, lights, alarm, doors, bonnet, boot, objective);
if(doors == VEHICLE_PARAMS_OFF || doors == VEHICLE_PARAMS_UNSET)
{
LockVehicle(PrivateVehicle[playerid][slot][vehID]);
GameTextForPlayer(playerid, "~w~Privat-Fahrzeug~n~~r~Abgeschlossen", 3000, 6);
PlaySoundInRange(pos[0], pos[1], pos[2], 10.0, 1027, 0, 0);
return 1;
}
else
{
UnlockVehicle(PrivateVehicle[playerid][slot][vehID]);
GameTextForPlayer(playerid, "~w~Privat-Fahrzeug~n~~g~Aufgeschlossen", 3000, 6);
PlaySoundInRange(pos[0], pos[1], pos[2], 10.0, 1027, 0, 0);
return 1;
}
}
}
return SendClientMessage(playerid,COLOR_GREY,"** Dies ist nicht dein Fahrzeug.");
@TVPikachu:
public OnPlayerEnterRaceCheckpoint(playerid)
{
if (IsPlayerInAnyVehicle(playerid))
{
if (GetVehicleModel(GetPlayerVehicleID(playerid)) == 560)
{
if(Praxis[playerid] == 1)
{
CheckpointStatus[playerid]++;
if(CheckpointStatus[playerid] < sizeof(racecheckpoints))
{
DisablePlayerRaceCheckpoint(playerid);
SetPlayerRaceCheckpoint(playerid,0,racecheckpoints[CheckpointStatus[playerid]][0],racecheckpoints[CheckpointStatus[playerid]][1],racecheckpoints[CheckpointStatus[playerid]][2],racecheckpoints[CheckpointStatus[playerid]+1][0],racecheckpoints[CheckpointStatus[playerid]+1][1],racecheckpoints[CheckpointStatus[playerid]+1][2],3.0);
}
else
{
Praxis[playerid]= 0;
CheckpointStatus[playerid] = 0;
DisablePlayerRaceCheckpoint(playerid);
SendClientMessage(playerid, erfolg, "Du hast bestanden test");
}
}
}
}
return 1;
}
Falls das so nicht geht, poste bitte wie du die Checkpoint-Daten in racecheckpoints einträgst.
Soweit ich weiß passiert dann einfach gar nichts. Besser wäre es natürlich dies abzufangen.
Gut, wenn da noch was hin kommt, dann ändere
SendClientMessage(playerid,COLOR_GREEN,string);
Zu
return SendClientMessage(playerid,COLOR_GREEN,string);
Dann sollte es passen.
Du musst es so schreiben:
if(strval(inputtext) == 0)
{
return ...
}
Wenn er nichts eingibt ist strval auch 0.
Ich schätze das ist, was du möchtest:
CMD:gangfight(playerid)
{
for(new i;i<MAX_GANGFIGHT;i++)
{
if(GangfightZone[i] == -1) continue;
if(IsPlayerInArea(playerid,Gangfight[i][minX],Gangfight[i][minY],Gangfight[i][maxX],Gangfight[i][maxY]))
{
if(Gangfight[i][gBesitzer] == Spieler[playerid][pFraktion])return SendClientMessage(playerid,COLOR_GREY,"** Dieses Gangfight Gebiet gehörts bereits euch.");
if(Gangfight[i][gAngriff] == 1)return SendClientMessage(playerid,COLOR_GREY,"** Es läuft bereits ein Gangfight.");
}
}
return SendClientMessage(playerid,COLOR_GREY,"** Du bist in keinem Gangfight Gebiet.");
}
Bei den anderen fehlt nach der IsPlayerInRangeOfPoint Abfrage dieses return:
return SendClientMessage(playerid, error, "Du kannst hier nicht Duty gehen!");
So einen stock kannst du machen, aber was würde das bringen? Du brauchst die Nachricht ja nur hier, das wäre im Prinzip der gleiche Aufwand.
Mit dem Plugin direkt kenne ich mich nicht aus, aber bei dem Makeleader Befehl ist ein Fehler:
SetPVarInt(pID,"getpID",pID);
zu:
SetPVarInt(pID,"getpID",playerid);
Und hier musst du pID und playerid umdrehen:
format(string1,sizeof(string1),"Der Spieler %s wurde von %s zum Leader der Fraktion %s benannt\nDatum: %02d/%02d/%d\nUhrzeit: %02d/%02d/%d\n Individueller Satz: %s",SpielerName(pID),SpielerName(playerid),fInfo[fID][f_name],Year, Month, Day,Hour, Minute, Second,inputtext);
WBB_AddThread (SpielerName(playerid),Erfolge," ","Erfolg: Zum Leader benannt!",string1, 0 , ERFOLG_CLOSE , ERFOLG_DISABLE , 0 , 1 , 0 , 1 , playerid);
zu:
format(string1,sizeof(string1),"Der Spieler %s wurde von %s zum Leader der Fraktion %s benannt\nDatum: %02d/%02d/%d\nUhrzeit: %02d/%02d/%d\n Individueller Satz: %s",SpielerName(playerid),SpielerName(pID),fInfo[fID][f_name],Year, Month, Day,Hour, Minute, Second,inputtext);
WBB_AddThread (SpielerName(pID),Erfolge," ","Erfolg: Zum Leader benannt!",string1, 0 , ERFOLG_CLOSE , ERFOLG_DISABLE , 0 , 1 , 0 , 1 , playerid);
Wenn du das ganze ohne individuellen Satz machst, dann wird kein Thread erstellt, da du ja da ein return hast. Ist das gewollt?
Teste ggf. einfach mal mit einem einfachen Befehl ob du überhaupt einen Thread erstellen kannst, oder ob du vielleicht falsch/gar nicht vebunden bist.
Dann funktioniert das so aber nicht, weil du erstellst die drei Flaggen ja immer an derselben Stelle, heißt du hast nachher zum Beispiel 5 Flaggen auf der gleichen Stelle. Die Position der Flaggen muss ja für jede Zone anders sein, sprich du musst diese Positionen auch am besten über die Datenbank laden.
Dann passt das auch mit der Schleife, nur dass du eben die 9 Koordinaten (3 pro Flagge) über die Datenbank eingibst.