indexx muss ein String mit dem Pfad sein, so wie du es hier:
dini_Int("/3DTexte/index.ini","index");
auch hast.
Beiträge von DasNeo
-
-
Wie hast du "indexx" und "X", "Y", "Z" definiert?
-
Versuchs bei der Ausgabe einfach mal mit einem %i anstatt einem %d.
Ein Fehler ist da aber sonst nicht drin.Oder noch besser:
switch(gangID)
{
case 0: { gangName = "Gang 1" }
case 1: { gangName = "Gang 2" }
}format(nstring,sizeof nstring,"Du wurdest von %s zum Leader der Fraktion %s ernannt!",DerAdmin,gangName);
-
Global:
PlayerName[MAX_PLAYERS][MAX_PLAYER_NAME+1]; // Hier speicherst du die Namen, die du änderst.
OnPlayerEnterVehicle(...)
{
if(vehicleid == ....) {
new nName[MAX_PLAYER_NAME+1];
GetPlayerName(playerid, PlayerName[playerid], sizeof(PlayerName[playerid]));
format(nName, sizeof(nName), "[TEST]%s", PlayerName[playerid]);
SetPlayerName(playerid, nName);
}
return 1;
}OnPlayerExitVehicle(....)
{
SetPlayerName(playerid, PlayerName[playerid]);
return 1;
}Zwar ungetestet, sollte aber so funken.
Gruß,
Neo. -
Du benutzt die switch-case-Funktion auch ganz falsch. :O
Man benutzt sie eigentlich so:
switch(irgendwas)
{
case 0:
{
// Code
}
// Keinen Code hier rein!
case 1:
{
// Code
}
// Keinen Code hier rein!
case 2:
{
// Code
}
}Zwischen den einzelnen cases darfst du keinen Code schreiben.
case 0, 1, 2:
{
gTeam[playerid] = TEAM_BALLAS;
GivePlayerWeapon(playerid,16,10);
GameTextForPlayer(playerid, "~p~Ballas", 3000, 3);
SetPlayerColor(playerid,LILA);
}
So wäre es richtig.Gruß,
Neo. -
Nein, so nicht.
Habe mich mal kurz ran gesetzt, und das hier für dich gebastelt. Ist zwar ungetestet und aus dem Kopf geschrieben, sollte allerdings laufen.Spoiler anzeigen
Global, also oben im Script.
new fText[200], playerName[MAX_PLAYER_NAME+1]; // Globale definierung, um Resourcen zu sparen, da wir das in mehreren Funktionen brauchen.
new PlayerTicket[MAX_PLAYERS];
/*
PlayerTicket[playerid] = 501; bedeutet, dass er ein Ticket erstellt hat. (Setz das am besten auf deine Slots +1, damit die Playerid keiner haben kann.)
PlayerTicket[playerid] = -1; bedeutet, dass er kein Ticket offen hat.
*/Spoiler anzeigen
ocmd:report(playerid, params[])
{
new sText[128];
if(PlayerTicket[playerid] == -1) return SendClientMessage(playerid, 0xFF0000FF, "Du hast bereits ein Ticket geöffnet. Wartes bis es angenommen wird, oder lösche es mir /reportloeschen.");
if(sscanf(params, "s", sText)) return SendClientMessage(playerid, 0xFF0000FF, "Benutzung: /report [Text]");
GetPlayerName(playerid, playerName, sizeof(playerName));
format(fText, sizeof(fText), "[Report] %s: %s", playerName, sText);
for(new i; i < MAX_PLAYERS; i++)
{
if(GetPVarInt(i, "admin") >= 1)
{
SendClientMessage(i, 0x000FFBFF, fText);
SendClientMessage(i, 0x000FFBFF, "Du kannst das Ticket mit '/reportoeffnen' öffnen.");
}
}
SendClientMessage(playerid, 0x000FFBFF, fText);
PlayerTicket[playerid] = 501; // Einfach nur, damit das nicht mehr -1 ist, und diese ID auch keiner haben kann.
return 1;
}Spoiler anzeigen ocmd:reportloeschen(playerid, params)
{
if(PlayerTicket[playerid] == -1) return SendClientMessage(playerid, 0xFF0000FF, "Du hast kein Ticket eröffnet, also kannst du es auch nicht löschen.");
PlayerTicket[playerid] = -1;
SendClientMessage(playerid, 0x000FFBFF, "Du hast dein Ticket erfolgreich gelöscht!");
return 1;
}Spoiler anzeigen ocmd:reportoeffnen(playerid, params[])
{
new playerName1[MAX_PLAYER_NAME+1];
if(GetPVarInt(playerid, "admin") < 1) return SendClientMessage(playerid, 0xFF0000FF, "Du bist kein Admin, und hast nicht die Rechte diesen Befehl zu nutzen!");
if(sscanf(params, "u", pID)) return SendClientMessage(playerid, 0xFF0000FF, "Benutzung: /reportoeffnen [Playerid/TeilDesNamens]");
if(PlayerTicket[pID] != 501 || PlayerTicket[pID] == -1) return SendClientMessage(playerid, 0xFF0000FF, "Diesem Spieler wird bereits geholfen, oder er hat sein Ticket gelöscht!");
PlayerTicket[playerid] = pID;
PlayerTicket[pID] = playerid;
SendClientMessage(playerid,0x000FFBFF ,"Du kannst nun mit dem Spieler reden!");
GetPlayerName(playerid, playerName, sizeof(playerName));
GetPlayerName(pID, playerName1, sizeof(playerName1));
SendClientMessage(pID, 0x000FFBFF, "____________SUPPORT____________");
format(fText,sizeof(fText), "Guten Tag, %s. Mein Name ist %s. Wie kann ich Ihnen helfen?", playerName1, playerName);
SendClientMessage(pID, 0x000FFBFF, fText);
return 1;
}Spoiler anzeigen ocmd:reportschliessen(playerid, params[])
{
if(GetPVarInt(playerid, "admin") < 1) return SendClientMessage(playerid, 0xFF0000FF, "Du bist kein Admin, und hast nicht die Rechte diesen Befehl zu nutzen!");
if(PlayerTicket[playerid] != -1) return SendClientMessage(playerid, 0xFF0000FF, "Du bist in keinem Supportgespräch, welches du beenden könntest.");
new pID = Ticket[playerid];
SendClientMessage(pID, 0xFF0000FF, "Dein Supporter hat den Chat geschlossen! Schönen Tag noch auf dem Server! =)");
Ticket[pID] = -1;
Ticket[playerid] = -1;
return 1;
}Spoiler anzeigen public OnPlayerText(playerid, text[])
{
if(PlayerTicket[playerid] == 501 || PlayerTicket[playerid] == -1) return 1;
GetPlayerName(playerid, playerName, sizeof(playerName));
format(fText, sizeof(fText) ,"[Support] %s: %s", playerName, text);
SendClientMessage(PlayerTicket[playerid], 0x000FFBFF, text);
return 1;
}Du musst das ganze noch auf dein Adminsystem anpassen. (GetPVarInt(playerid, "admin") habe ich hier verwendet.)
Gruß,
Neo. -
-
Man könnte doch einfach nen befehl machen mit dem es aktuallisiert wird
Das wäre dann aber nicht automatisch.
-
Zitat
Ich hatte vor, erst alles mit dini zu machen und am Ende alles umzuschreiben auf eine andere Speicherungsart.
Das wäre doch doppelte Arbeit. - Versuchs direkt mit MySQL. Habe mich dort am Anfang auch schwer mit getan, aber dafür ist das Forum ja da. :b
-
Na du machst einfach einen Timer, der jede X Minuten deine Daten aktualisiert.
(SetPlayerScore(playerid, dini_Int...))
Anders ist es nicht möglich.
Gruß,
Neo. -
Jaein.
Du müsstest halt einen Timer rein machen, der dir alle 5 Minuten (oder so) das Zeug aktualisiert. Ansonsten ist das nicht möglich, auch nicht mit MySQL.
Es aktualisiert sich immer nur dann, wenn vom Script vorgesehen.Gruß,
Neo. -
Problem an der Sache ist, dass dann nicht mehrere Tickets auf einmal beantwortet werden können. - Und das ist auch dein Fehler.
Wenn der Supporter das Ticket annimmt, dann setz eine Variable des Supporters auf die ID des Hilfesuchenden und umgekehrt.
(Sprich:
Supporter Peter mit ID 20 bekommt die Variable auf 3 gesetzt
Hilfesuchender Hannes mit ID 3 bekommt die Variable auf 20 gesetzt.
Die Variable sollte Standartmäßig auf -1 gesetzt werden. (Global))Dann kannst du bei OnPlayerText abfragen, ob seine Variable != -1 ist.
Falls sie das nicht ist, dann schickst du dem Player mit der ID in der Variable eine Nachricht.
(Wenn deine Variable PlayerTicket heißt so:
format(message, sizeof(message), "[Ticket]%s : %s"pName, text);
SendClientMessage(PlayerTicket[playerid], 0xFF0000FF, message))Gruß,
Neo. -
Hey,
das liegt daran, dass du das sscanf vor die anderen Abfragen machen musst, da er erst dann eine wirkliche ID hat.
Sprich:
if(sscanf(params, "u", PlayerWhoGetsSlapped)) return SendClientMessage(playerid, COLOR_RED, "[WARNUNG] Gebrauch: /slap [ID]!");
if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, COLOR_RED, "[ERROR] Du bist kein Admin!");
if(!IsPlayerConnected(PlayerWhoGetsSlapped)) return SendClientMessage(playerid, COLOR_RED, "[ERROR] Dieser Spieler ist nicht online!");
Anstattif(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, COLOR_RED, "[ERROR] Du bist kein Admin!");
if(!IsPlayerConnected(PlayerWhoGetsSlapped)) return SendClientMessage(playerid, COLOR_RED, "[ERROR] Dieser Spieler ist nicht online!");
if(sscanf(params, "u", PlayerWhoGetsSlapped)) return SendClientMessage(playerid, COLOR_RED, "[WARNUNG] Gebrauch: /slap [ID]!"); -
Das mit der eigene Funktion ist so ne Sache haus mal unter OnPlayerSpawn rein
Huh. Das funktioniert :O. Jedenfalls teilweise.
#define zivispawn 1642.1669,-2332.9575,13.5469SetPlayerPos(playerid,zivispawn);
Spawnt mich auf die Position 0.0,0.0,0.0 'ne Idee warum?
Thank you so far.
Hast du denn auch eine AddPlayerClass unter OnGameModeInit?
Würdest du lesen, wüsstest du, dass ich das habe. :{SetSpawnInfo <- such das im Script.
Sollte es nicht vorhanden sein setzt dies beim Einloggen rein genauso beim Registrieren
Ist SetSpawnInfo denn wirklich so wichtig? Habe es, ehrlich gesagt, noch nie benutzt, und hatte bisher damit auch keine Probleme. -
Wunderbärchen.
Lag an sscanf. - Funktioniert nun, danke! -
mach mal Crashdetect raus und compile das Script nochmal
Script[gamemodes/drl.amx]: Run time error 19: "File or function is not found", war doch irgendwie klar, oder?
Plugins alle drinne ?Zeig mal die Serverlog.
C
Alles anzeigen[22:41:18] Loading plugin: streamer [22:41:18] *** Streamer Plugin v2.5.2 by Incognito loaded *** [22:41:18] Loaded. [22:41:18] Loaded 1 plugins. [22:41:18] [22:41:18] Filterscripts [22:41:18] --------------- [22:41:18] Loaded 0 filterscripts. [22:41:18] Script[gamemodes/drl.amx]: Run time error 19: "File or function is not found" [22:41:18] Number of vehicle models: 0 ... includes: #include <a_samp> #include <dini> #include <Dudb> #include <sscanf> // nur der Code #include <ocmd> #include <streamer>
-
Warum ist das bei OnPlayerSpawn nicht mit drin?
also die Koordinate die du mir geschickt hast?
Weil ich dafür eine eigene Funktion benutze.
DasNeo:
Irgendwie was mit der Gravity gemacht?
Sonst versuch mal in der Konsole die Gravity auf 0.008 zu stellen, und dann probiere es nochmal
An der Gravity habe ich nichts gemacht. - Auch wenn ich es noch mal auf den Wert setze, klappt es nicht. -
Hallöchen,
habe das Problem, dass ich bei einem meiner Scripts einen Run time error 19 "File or funktion not found" habe.
Crashdetect gibt mir nur aus:
Code[22:33:55] [crashdetect]: Cannot identify file name [22:33:55] Script[gamemodes/drl.amx]: Run time error 19: "File or function is not found"
Ich habe gelesen, dass ich mir eine andere "Version" dafür runterladen solle. Habe ich gemacht, und diese gibt mir nun:
Code[22:34:47] crashdetect: Found file: gamemodes\drl.amx [22:34:47] crashdetect: gamemodes\drl.amx does not contain debug information [22:34:47] Script[gamemodes/drl.amx]: Run time error 19: "File or function is not found"
Naja, nun weiß ich leider auch nicht weiter.
-
1642.1669,-2332.9575,13.5469 <-
Lasse es über 'nen Localserver laufen.
Ich glaube das hat keinen Sinn mehr. Ich danke euch trotzdem.
-
Der Gamemode benötigt keine Plugins und hat auch keine drin.
Habe jetzt mal alle Objekte entfernt, und der Fehler besteht trotzdem.