Suche nach den beiden Variablen (STRG+F) und lösche die Deklaration (new ...) davon.
Oh man.. mein Fehler.. danke!
Suche nach den beiden Variablen (STRG+F) und lösche die Deklaration (new ...) davon.
Oh man.. mein Fehler.. danke!
Zitat von Kasakow@KinGRaPTiiC
Das hat sich zur Info seit den neuen Versionen ein bisschen umgestellt, les dir mal die aktuelle Wiki durch;)
@Kasakow Vielen Dank wusste nicht das es das gibt vielleicht hab ich jetzt mal weniger Probleme
/edit Frage:
Sehe in manchen Scripts das die Dialoge in einem Enum gemacht werden wofür ist das Ressourcen sparender oder so was? weil hab es halt ganz normal mit #define XXXX 1 z.b
Sehe in manchen Scripts das die Dialoge in einem Enum gemacht werden wofür ist das Ressourcen sparender oder so was? weil hab es halt ganz normal mit #define XXXX 1 z.b
Ist weniger Schreibaufwand und du musst nicht manuell durch nummerieren
Ressourcensparender ist es nicht
weil hab es halt ganz normal mit #define XXXX 1 z.b
Das ist auch besser so, vor allem dann, wenn man Dialoge in mehreren Codes (Gamemode, Filterscript) definiert.
Beim enum würde die erste ID immer bei 0 anfangen, somit hätte man in beiden Codes den ersten Dialog auf ID 0, das klappt nicht. Man muss daher den ersten Wert des enums explizit anpassen, damit das nicht vorkommt.
Vergisst man das, sodass sich die IDs überschneiden, kommt es schnell zu Dialog-Konflikten, sprich falsche Dialoge werden angezeigt.
Vor allem bei Filterscripts, die veröffentlicht werden, sollte man das unbedingt vermeiden, mit enums zu machen.
Ich empfehle daher die #define - Variante, auch wenn es mehr Schreibarbeit ist.
Ressourcentechnisch spielt es keine Rolle.
Sehe in manchen Scripts das die Dialoge in einem Enum gemacht werden wofür ist das Ressourcen sparender oder so was? weil hab es halt ganz normal mit #define XXXX 1 z.b
Ich weiß, es wurde von meinen beiden Vorpostern schon mehr oder weniger erklärt, aber ich möchte dennoch auf dieses Tutorial verweisen:
Dialoge strukturieren - leicht gemacht | Script strukturieren
Guten Morgen,
ich habe mal eine Frage, ich lasse meine [wiki]PlayerTextDraws[/wiki] über eine Schleife laden, das auch soweit komplett,
leider haut mir "CrashDetect" dabei aber einige an Infos raus, die ich gerne nicht hätte aber dennoch meine Schleife nutzen könnte.
[pwn]
Die Schleife:
for(new i = 0; i < sizeof(vRL_Register); i++)
{
PlayerTextDrawShow(playerid, vRL_Register[playerid][i]);
}
Die Log:
[00:56:29] [debug] Run time error 4: "Array index out of bounds"
[00:56:29] [debug] Attempted to read/write array element at index 20 in array of size 20
[00:56:29] [debug] AMX backtrace:
[00:56:29] [debug] #0 00020d14 in public OnPlayerRequestClass (playerid=0, classid=0) at Visual-RL.p:39
[/pwn}
Mit freundlichen Grüßen,
PlayerTextDrawShow(playerid, vRL_Register[playerid]);
ZuPlayerTextDrawShow(playerid, vRL_Register[playerid][i]);
Und die Schleife zu
for(new i = 0; i < sizeof(vRL_Register[]); i++)
Eventuell musst du auch dein gesamtes Array noch auf zwei Dimensionen anpassen. Zuerst MAX_PLAYERS und dann 20.
Öhh ich komm derzeit nicht weiter, ich wollte eine Error Message erstellen. Leider funktioniert das nicht so wie ich das will ( shit Errors)
Hier die Errors:
(220) : error 021: symbol already defined: "ERROR"
(222) : error 021: symbol already defined: "format"
(223) : error 010: invalid function or declaration
(244) : error 021: symbol already defined: "INFO"
(245) : error 021: symbol already defined: "string"
(247) : error 010: invalid function or declaration
Die Script zeilen:
[pwn=220]
stock ERROR(playerid, error[]){
new string[128];
format(string, 128, ""#HTML_RED"[Fehler] "#HTML_WHITE"%s", error);
return SendClientMessage(playerid, -1, string);
}
[/pwn]
(220) : error 021: symbol already defined: "ERROR"
Sieht so aus als hast du irgendwo schon mal etwas mit "ERROR" deklariert.
Das Gleiche bei INFO.
Der Rest sollten Folgefehler sein.
Was ich drinne habe ist nur: Register / Login System in MySQL von dir @Jeffry
Das erklärt es.
In der a_mysql.inc findet sich das hier:
enum E_LOGLEVEL
{
NONE = 0,
DEBUG = 1,
INFO = 2,
WARNING = 4,
ERROR = 8,
ALL = ERROR | WARNING | INFO | DEBUG
};
Somit sind beide bereits deklariert, daher der Fehler.
Entweder du benennst deine Funktion etwas um, oder du benennst diese enum-Werte in der a_mysql.inc um, beides ist möglich.
Hahaha Danke...
Jetzt noch ne Frage, wie kann ich das im Script machen, das wenn es die Tabelle in MySQL nicht gibt, das die erstellt wird?
MfG
Das kannst du mit CREATE TABLE IF NOT EXISTS machen.
Beispiel siehe hier: [jTuT] Fraktions-Fahrzeug-System mit MySQL R39-5 (Gleich der erste Code)
Danke, hab das so gemacht wie in dem Tutorial:
include:
CreateUserTable() {
new query[512];
format(query, sizeof(query), "CREATE TABLE IF NOT EXISTS `account_main` (");
format(query, sizeof(query), "%s`ID` int(11) NOT NULL PRIMARY KEY,",query);
format(query, sizeof(query), "%s `name` varchar(32) NOT NULL,",query);
format(query, sizeof(query), "%s `password` varchar(64) NOT NULL,",query);
format(query, sizeof(query), "%s `level` int(11) NOT NULL DEFAULT '0',",query);
format(query, sizeof(query), "%s `admin` int(11) NOT NULL DEFAULT '0',",query);
format(query, sizeof(query), "%s `money` int(11) NOT NULL DEFAULT '0',",query);
format(query, sizeof(query), "%s `kills` int(11) NOT NULL DEFAULT '0',",query);
format(query, sizeof(query), "%s `deaths` int(11) NOT NULL DEFAULT '0',",query);
format(query, sizeof(query), "%s) ENGINE=InnoDB DEFAULT CHARSET=latin1;",query);
//handle = die Connection Handle ID die vor mysql_connect steht.
mysql_tquery(handle, query);
return 1;
}
und unter OnGameModeInit im Script hab ich das definiert, aber es wird keine Tabelle erstellt.
Woran liegt das?
Hier ist ein Komma zu viel:
format(query, sizeof(query), "%s `deaths` int(11) NOT NULL DEFAULT '0',",query);
zu:
format(query, sizeof(query), "%s `deaths` int(11) NOT NULL DEFAULT '0'",query);
Ich habe eine frage und zwar möchte ich das wenn ich /scheine eingebe dort steht Führerschein bestanden aber das soll dann z.B so aussehen:
SendClientMessage(playerid,x,"Führerschein<- WEISS -> GRÜN bestanden // oder
SendClientMessage(playerid,x,"Führerschein<- WEISS -> ROT nicht bestanden
aber wie mache ich das dass script erkennt das wenn PlayerInfo[playerid][pCarlic] = 1;
dort halt bestanden steht?
Da gibt es viele Möglichkeiten, hier mal ein paar:
1. Möglichkeit:
if(PlayerInfo[playerid][pCarlic] == 1) SendClientMessage(playerid,-1,"Führerschein {00FF00}bestanden!");
else SendClientMessage(playerid,-1,"Führerschein {FF0000}noch nicht bestanden!");
2. Möglichkeit:
SendClientMessage(playerid,-1,(PlayerInfo[playerid][pCarlic])?("Führerschein {00FF00}bestanden!"):("Führerschein {FF0000}noch nicht bestanden!"));
3. Möglichkeit:
new tmp[][]={"{00FF00}bestanden!", "{FF0000}noch nicht bestanden!"};
format(string,sizeof(string),"Führerschein %s",tmp[PlayerInfo[playerid][pCarlic]]);
SendClientMessage(playerid,-1,string);
Also die erste sieht am einfachsten aus
Was mach ich nur falsch^^?
Mir wird garnicht's angezeigt
hier der screen:
Hier der Code:
new name[MAX_PLAYER_NAME], ip[16], reason[64], admin[MAX_PLAYER_NAME], out[512], outcat[128]; cache_get_value_name(0,"name", name); cache_get_value_name(0,"ip", ip); cache_get_value_name(0,"admin", admin); cache_get_value_name(0,"reason", reason); strcat(out, "{FFFFFF}Du wurdest permanent vom Server gebannt.\n"); format(outcat, sizeof(outcat), "{007dff}Gebannter Account: {FFFFFF}%s\n", name); strcat(out, outcat); format(outcat, sizeof(outcat), "{007dff}Gebannte IP: {FFFFFF}%s\n", ip); strcat(out, outcat); format(outcat, sizeof(outcat), "{007dff}Grund: {FFFFFF}%s\n", reason); strcat(out, outcat); format(outcat, sizeof(outcat), "{007dff}Ausführender Admin: {FFFFFF}%s\n", admin); strcat(out, outcat); strcat(out, "\nWenn du der Meinung bist, dass du zu unrecht gebannt wurdest, kannst du im Forum unter\n{007dff}"#FORUMURL"{FFFFFF} einen Entbannantrag schreiben."); ShowPlayerDialog(playerid, DIALOG_INFORMATION, DIALOG_STYLE_MSGBOX, "Bann", out, "Ok", "");
Es wird auch richtig abgerufen:
mysql_format(handle, query, sizeof(query), "SELECT id FROM account_ban WHERE name = '%e'",PlayerInfo[playerid][pName]);
printf("%s",query);
//Das Query wird abgesendet und die playerid an OnUserCheck übergeben.
mysql_pquery(handle, query, "OnUserBanned", "d", playerid);