Mh Okay wollte eigentlich nicht mit ~r~ machen sondern mit hex Codes.
Habs jetz so gelöst:
TextDrawColor(Textdraw, Hexcode)
HideTextDrawForPlayer()
ShowTextDrawForPlayer()
Funktioniert super auch ausserhalb von OnGameModeInit
[SAMMELTHREAD] Kleine Scripting Fragen
- Rafelder
- Unerledigt
Dein Problem konnte durch einen User gelöst werden? Bedank dich bei ihm indem du seinen Beitrag als Hilfreich markierst sowie einen Daumen oben dalässt
Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!
Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
-
-
Moin,
was ist eigentlich der Unterschied zwischen return 0 und return 1 bei dem Fall hier?://OnPlayerText:
if(PlayerInfo[playerid][pMuted] == 1)
{
SendClientMessage(playerid, COLOR_ERROR, "Du kannst nichts schreiben, da dich ein Administrator gemuted hat!");
return 0;
}
if(PlayerInfo[playerid][pMuted] == 1)
{
SendClientMessage(playerid, COLOR_ERROR, "Du kannst nichts schreiben, da dich ein Administrator gemuted hat!");
return 1;
}
Beides macht das selbe - Wenn der Player gemuted ist schickt er die Message und "stoppt" da den Code.//EDIT
2. Wofür steht das "const" hier:
stock SendAdminMessage(level, const msg[])
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if (PlayerInfo[i][pAdminlevel] >= level)
{
new string[128];
format(string, sizeof(string), "[Adm] %s", msg);
SendClientMessage(i, COLOR_ADMIN, string);
}
}
}
return 1;
}
Wenn man es weglässt funktioniert es genau so. -
-
// This is a comment
// uncomment the line below if you want to write a filterscript
//#define FILTERSCRIPT#include <a_samp>
#if defined FILTERSCRIPT
public OnFilterScriptInit()
{
print("\n--------------------------------------");
print(" Blank Filterscript by your name here");
print("--------------------------------------\n");
return 1;
}public OnFilterScriptExit()
{
return 1;
}#else
main()
{
print("\n----------------------------------");
print(" Blank Gamemode by your name here");
print("----------------------------------\n");
}#endif
#define RED 0xAA3333AA
#define YELLOW 0xFFFF00AAforward Whitelist(playerid);
new gdebug = 0;
public OnGameModeInit()
{
// Don't use these lines if it's a filterscript
SetGameModeText("Blank Script");
AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
return 1;
}
public Whitelist(playerid)
{
if (gdebug >= 1){printf("DEBUG Whitelist Check(%d) (%s)", playerid);}
new playername2[MAX_PLAYER_NAME];
new storedcopname[64];
GetPlayerName(playerid, playername2, sizeof(playername2));
new File: file = fopen("Whitelist.cfg", io_read);
if (file)
{
new valtmp[MAX_PLAYER_NAME];
while (fread(file, valtmp) > 0)
{
strmid(storedcopname, valtmp, 0, strlen(playername2), 255);
if ((strcmp(storedcopname, playername2, true, strlen(playername2)) == 0) && (strlen(playername2) == strlen(storedcopname)))
{
fclose(file);
return 1;
}
}
}
fclose(file);
return 0;
}public OnPlayerConnect(playerid)
{
if (Whitelist(playerid)) {
} else {
SendClientMessage(playerid, RED, "Du stehst nicht auf der Whitelist");
}
return 1;
}public OnGameModeExit()
{
return 1;
}public OnPlayerRequestClass(playerid, classid)
{
SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
return 1;
}public OnPlayerConnect(playerid)
{
if (Whitelist(playerid)) {
} else {
SendClientMessage(playerid, RED, "Du stehst nicht auf der Whitelist");
}
return 1;
}public OnPlayerDisconnect(playerid, reason)
{
return 1;
}public OnPlayerSpawn(playerid)
{
return 1;
}public OnPlayerDeath(playerid, killerid, reason)
{
return 1;
}public OnVehicleSpawn(vehicleid)
{
return 1;
}public OnVehicleDeath(vehicleid, killerid)
{
return 1;
}public OnPlayerText(playerid, text[])
{
return 1;
}public OnPlayerCommandText(playerid, cmdtext[])
{
new cmd[256];
new idx;
cmd = strtok(cmdtext, idx);if(strcmp(cmd, "/whitelist", true) == 0)
{
new length = strlen(cmdtext);
while ((idx < length) && (cmdtext[idx] <= ' '))
{
idx++;
}
new offset = idx;
new result[64];
while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
{
result[idx - offset] = cmdtext[idx];
idx++;
}
result[idx - offset] = EOS;
if(!strlen(result))
{
SendClientMessage(playerid, YELLOW, "Benutze: /addp [spielername]");
return 1;
}
if ((IsPlayerAdmin(playerid)))
{
new Float:px, Float:py, Float:pz;
GetPlayerPos(playerid, px, py, pz);
new coordsstring[256];
format(coordsstring, 256, "%s\n",result);
new File:hFile;
hFile = fopen("Whitelist.cfg", io_append);
fwrite(hFile, coordsstring);
fclose(hFile);
SendClientMessage(playerid, RED, " Der Spieler wurde zur Whitelist geaddet!");
}
return 1;
}
return 1;
}public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
return 1;
}public OnPlayerExitVehicle(playerid, vehicleid)
{
return 1;
}public OnPlayerStateChange(playerid, newstate, oldstate)
{
return 1;
}public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
return 1;
}public OnPlayerClickPlayer(playerid, clickedplayerid, source)
{
return 1;
}
//-----------------------strtok-----------------------------
strtok(const string[], &index)
{
new length = strlen(string);
while ((index < length) && (string[index] <= ' '))
{
index++;
}new offset = index;
new result[20];
while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
{
result[index - offset] = string[index];
index++;
}
result[index - offset] = EOS;
return result;
}
//----------------------------------------------------Ich bekomme immer den error: C:\Dokumente und Einstellungen\Administrator\Desktop\GTA San Andreas server b\pawno\white.pwn(94) : error 021: symbol already defined: "OnPlayerConnect"
/edit Error
-
Wie kann ich ganz unten einen Text entfernen oder bzw abändern?
Oder rechts irgendwo einen Text einblenden, aber für immer, nicht nur für ein paar Sekunden.
-
Copyright = TextDrawCreate(10,428,"dein forum");
TextDrawLetterSize(Copyright,0.5,1.3);
TextDrawColor(Copyright,COLOR_TUTBLAU);//Hier musst du die farbe ändern
TextDrawSetShadow(Copyright,0);
TextDrawShowForAll(Copyright);ModeName = TextDrawCreate(628.000000,427.000000,"deine ts ip ");//TS³sversion
TextDrawAlignment(ModeName,3);
TextDrawBackgroundColor(ModeName,0xF60000F6);//Farbe
TextDrawFont(ModeName,2);
TextDrawLetterSize(ModeName,0.399999,1.700000);
TextDrawColor(ModeName,0x000000ff);//Farbe kannst auch COLOR_RED machen oder so
TextDrawSetProportional(ModeName,1);
TextDrawSetShadow(ModeName,1);
TextDrawShowForAll(ModeName);have fun 4 eva
ehm das muss unter OnGameModeInit
//Edit was verbessert + hinzugefügt
-
Müsste das nicht theoretisch funktionieren?
#define SERVER_MAX_PLAYERS GetMaxPlayers();
In der Praxis tuts das nähmlich nicht, bzw der Compiler stürtzt ab. -
der compiler ersetzt das definierte wort gegen die zahl die man angegeben hat an jeder stelle im script beim compilen. GetMaxplayers hat aber keinen wert weil es eine funktion ist und deshalb schmiert er ab. Du könntest aber
new SERVER_MAX_PLAYERS = GetMaxPlayers();
machen
Bin mir net ganz sicher -
Da passiert das gleiche, also compiler stürtzt ab. Sonst noch jmd ne Idee?^^
-
// oben :
new mp;
// OnGameModeInit :
mp = GetMaxPlayers(); -
Guten abend zusammen ich hätte da ein kleines Problem
Also es ist folgendes Problem
Ich registriere mich auf meinen Server wenn ich dann relogg mache und mich wieder einloggen will steht da auch mein Account wurde gefunden und so weiter aber mein Problem ist das ich irgendein Passwort eingeben kann und er mich dann einloggt also irgendwie speichert er das Passwort was ich bei der registration eingegeben habe nicht wisst ihr wo das Problem sein kann?
-
Hast du MadAd? Wenn ja, vergiss es und schau dir das Tutorial von Blackfox_UD an, des Login system von ihm ist Bugfrei und simpel. Wenn es nicht MadAd ist sondern dein eigenes, dann schau dir auch mal das Tutorial von Blackfox_UD an, dort suchst du die richtigen Zeilen an und vergleichst deines und sein Script.
-
Hab ne Warnung und ka wieso.
if(!pInfo[playerid][gTeam] == Cops)C:\Users\Deniz\Desktop\neuer server1\gamemodes\Reallife.pwn(955) : warning 213: tag mismatch
Kann mir wer bitte helfen.
Mfg. Deniz
-
if(pInfo[playerid][gTeam] != Cops)
Müsste gehen -> Ungetestet.
MfG
Maxx -
huhu,
Hab hier ne Abfrage in nem GUI Dialog
if(strlen(inputtext) == 4 && IsNumeric(inputtext))
{
//aktion1
}
else
{
//aktion2
}Jedoch ist es wie folgt:
Wenn ich vier Zahlen eingebe sollte es kein Problem in der Bafrage gebene und die erste Aktion sollte ausgeführt werden.
Wenn ich nun jedoch genau vier Zahlen eingebe wird Aktion 2 und nicht Aktion 1 ausgeführt.
Wenn ich vier Buschstaben eingebe, dann wird auch Aktion 2 ausgeführt, so wie es sein soll.
Erkennt jemand den Fehler?So ist bei mir IsNumeric definiert:
stock IsNumeric(const string[])
{
new lenght = strlen(string);
for (new i=0; i<lenght; i++)
{
if (!((string[i] <= '9' && string[i] >= '0') || (i==0 && (string[i]=='-' || string[i]=='+'))))
{
return false;
}
}
return 0;
} -
Ja ich hab hier ein kleines Problem mit einem dcmd kick befehl bzw. auch mit dem ban befehl
also ich hab hier diesen Befehl:
dcmd_kick(playerid, params[])
{
new pid, reason, str[256];
if(sscanf(params, "rs", pid, reason)) return SendClientMessage(playerid, GREY, "Verwendung: /kick [Spieler/ID] [Grund]");
if(pid == INVALID_PLAYER_ID) return SendClientMessage(playerid, GREY, "Ungültige ID");
format(str, sizeof(str), "Spieler (( %s )) wurde von (( %s )) gekickt! Grund: %s.", playername(pid), playername(playerid), reason);
SendClientMessageToAll(RED, str);
Kick(pid);
return 1;
}Und nun wenn ich jetzt im Spiel schreibe: /kick 0 test oder /kick vater test
kommt so ein mist raus:
Spieler (( )) wurde von (( VaTeR325 )) gekickt! Grund: test.
SERVER: Unknown Command.Wenn ich nun schreibe: /kick 0 test test oder /kick vater test test
kommt sowas raus:
Spieler (( )) wurde von (( )) gekickt! Grund: test test.
SERVER: Unknown Command.und wenn ich das einfach entferne:
format(str, sizeof(str), "Spieler (( %s )) wurde von (( %s )) gekickt! Grund: %s.", playername(pid), playername(playerid), reason);
SendClientMessageToAll(RED, str);werd ich ganz normal gekickt...
wieso ist das so? was muss ich ändern damit das geht?
-
dcmd_kick(playerid, params[])
{
new pid, reason, str[256];
if(sscanf(params, "us", pid, reason)) return SendClientMessage(playerid, GREY, "Verwendung: /kick [Spieler/ID] [Grund]");
if(pid == INVALID_PLAYER_ID) return SendClientMessage(playerid, GREY, "Ungültige ID");
format(str, sizeof(str), "Spieler (( %s )) wurde von (( %s )) gekickt! Grund: %s.", playername(pid), playername(playerid), reason);
SendClientMessageToAll(RED, str);
Kick(pid);
return 1;
}Versuchs mal so, "u" ist für Spieler, nicht "r".
-
ne r ist auch für spieler (steht ja auch bei der sscanf seite) und mit u hab ich auch schon probiert das selbe
-
Ah hast du die PluginVersion von SSCANF? Da soll es angeblich bei dem Spielerparameter seit 0.3c Probleme geben, ich hab nur die alte Version...kannst es ja mal mit "ds" versuchen und nur die SpielerID eingeben.
-
Du musst reason auch als string angeben. Und falls du die plugin version benutzt musst du die stringlänge auch mit schreiben.
dcmd_kick(playerid, params[])
{
new pid, reason[64], str[256];
if(sscanf(params, "us[64]", pid, reason)) return SendClientMessage(playerid, GREY, "Verwendung: /kick [Spieler/ID] [Grund]");
if(pid == INVALID_PLAYER_ID) return SendClientMessage(playerid, GREY, "Ungültige ID");
format(str, sizeof(str), "Spieler (( %s )) wurde von (( %s )) gekickt! Grund: %s.", playername(pid), playername(playerid), reason);
SendClientMessageToAll(RED, str);
Kick(pid);
return 1;
} -