Der Fehler ist im Code oben in Zeile 3 und die Klammern etc. sind alle am richtigen Ort.
Beiträge von Keine_Person
-
-
else if(!strcmp(produkt, InventarName[playerid][Kokain]))
{
if(Inventar[playerid][Kokain][qualitaet] >= menge) //<-Hier ist der Error
{
Inventar[playerid][Kokain][qualitaet] -= menge;
Info[playerid][RpPoints] += InventarRPPlus[Kokain];
return 1;
}
else return SCM(playerid,rot,"Nicht genügend vorhanden!");
}
Jetzt habe ich hier einen Error obwohl die selbe Funktion mit den anderen Drogen klappt. Keine Ahnung was da spuckt.Code
Alles anzeigenC:\Program Files\Grand Theft Auto San Andreas\gamemodes\bigcitylife.pwn(258) : warning 213: tag mismatch C:\Program Files\Grand Theft Auto San Andreas\gamemodes\bigcitylife.pwn(258) : error 001: expected token: ")", but found "[" C:\Program Files\Grand Theft Auto San Andreas\gamemodes\bigcitylife.pwn(258) : error 029: invalid expression, assumed zero C:\Program Files\Grand Theft Auto San Andreas\gamemodes\bigcitylife.pwn(258) : warning 215: expression has no effect C:\Program Files\Grand Theft Auto San Andreas\gamemodes\bigcitylife.pwn(258) : error 001: expected token: ";", but found "]" C:\Program Files\Grand Theft Auto San Andreas\gamemodes\bigcitylife.pwn(258) : fatal error 107: too many error messages on one line Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase 4 Errors.
-
enum Inventar_Name
{
PolosChickenwings[128],
FreddysMargarithaPizza[128],
Sprunk[128],
Cannabis[128],
CrystalMeth[128],
Heroin[128],
Kokain[128]
}
enum RPPlus_Daten
{
PolosChickenwings,
FreddysMargarithaPizza,
Sprunk,
Cannabis,
CrystalMeth,
Heroin,
Kokain
}
enum Inventar_Daten
{
//Bedarf Inventar
Float:PolosChickenwings,
Float:FreddysMargarithaPizza,
Float:Sprunk,
//Illegales Inventar
Float:Cannabis[101],
Float:CrystalMeth[101],
Float:Heroin[101],
Float:Cocaine[101],
//Normales Inventar
pMarkeOfficer,
pSateliteHandy,
pUniformOfficer,
};
};new Info[MAX_PLAYERS][Account_Daten];
new Inventar[MAX_PLAYERS][Inventar_Daten];
new InventarName[MAX_PLAYERS][Inventar_Name];
new InventarRPPlus[RPPlus_Daten];else
{
for(new i = 0; i<MAX_INVENTAR; i++)
{
if(!strcmp(produkt, InventarName[playerid][Inventar_Name:i]) /*&& !isnull(produkt) && !isnull(InventarName[playerid][Inventar_Name:i])*/)
{
if(Inventar[playerid][Inventar_Daten:i] >= menge)
{
Inventar[playerid][Inventar_Daten:i] -= menge;
Info[playerid][RpPoints] += InventarRPPlus[RPPlus_Daten:i];
return 1;
}
else return SCM(playerid,rot,"Nicht genügend dabei!");
}
if(i == MAX_INVENTAR)
{
SCM(playerid,rot,"Produkt nicht bekannt!");
return 1;
}
}
} -
Ich brauch es in einem Enum damit ich es dynamisch abzählen kann für die vielen Inventare die keine Drogen sind sondern einfach nur Produkte zum Essen und trinken. Bei der Cannabis Funktion und der dynamischen Funktion klappt es auch wunderbar, aber nur hier nicht. Gibt es sonst eine andere Möglichkeit oder findest du den Fehler beim CrystelMeth?
Edit: Wenn ich auf 5 runtergehe klappt es irgendwie.
Edit 2: Irgendwie bekomme ich Errors bei Funktionen die anders genau so klappen? -
Hab einen neuen Fehler. Bei der ersten Funktion klappt es ohne Probleme, hier jedoch macht er Macken:
enum RPPlus_Daten
{
PolosChickenwings = 1,
FreddysMargarithaPizza = 1,
Sprunk = 1,
Cannabis = 3,
CrystalMeth = 10,
Heroin = 10,
Kokain = 5
}
else if(!strcmp(produkt, InventarName[playerid][CrystalMeth]))
{
if(Inventar[playerid][CrystalMeth][qualitaet] >= menge)
{
Inventar[playerid][CrystalMeth][qualitaet] -= menge;
Info[playerid][RpPoints] += InventarRPPlus[playerid][CrystalMeth];
return 1;
}
}
In der Zeile: Info[playerid][RpPoints] += InventarRPPlus[playerid][CrystalMeth]; -
Ach übersehen.
-
Man soll die Droge, Qualitätsstufe und die Menge angeben und dies soll dann entsprechend genutzt werden. Irgendwie habe ich leider einen Error dabei:
enum Inventar_Daten
{
//Bedarf Inventar
Float:PolosChickenwings,
Float:FreddysMargarithaPizza,
Float:Sprunk,
//Illegales Inventar
Float:Cannabis[101],
Float:CrystalMeth[101],
Float:Heroin[101],
Float:Cocaine[101],
//Normales Inventar
pMarkeOfficer,
pSateliteHandy,
pUniformOfficer,
};else if(!sscanf(params,"sdf",produkt,qualitaet,menge))
{
for(new i = 0; i<MAX_INVENTAR; i++)
{
if(!strcmp(produkt, InventarName[playerid][Inventar_Name:i]) /*&& !isnull(produkt) && !isnull(InventarName[playerid][Inventar_Name:i])*/)
{
if(Inventar[playerid][Inventar_Daten:i] >= menge)
{
Inventar[playerid][Inventar_Daten:i][qualitaet] -= menge;
Info[playerid][RpPoints] += InventarRPPlus[playerid][RPPlus_Daten:i];
return 1;
}
else SCM(playerid,rot,"Nicht genügend dabei!");
}
if(i == MAX_INVENTAR)
{
SCM(playerid,rot,"Produkt nicht bekannt!");
return 1;
}
}
}Code
Alles anzeigenC:\Program Files\Grand Theft Auto San Andreas\gamemodes\bigcitylife.pwn(216) : warning 215: expression has no effect C:\Program Files\Grand Theft Auto San Andreas\gamemodes\bigcitylife.pwn(216) : error 001: expected token: ";", but found "[" C:\Program Files\Grand Theft Auto San Andreas\gamemodes\bigcitylife.pwn(216) : error 029: invalid expression, assumed zero C:\Program Files\Grand Theft Auto San Andreas\gamemodes\bigcitylife.pwn(216) : warning 215: expression has no effect C:\Program Files\Grand Theft Auto San Andreas\gamemodes\bigcitylife.pwn(216) : error 001: expected token: ";", but found "]" C:\Program Files\Grand Theft Auto San Andreas\gamemodes\bigcitylife.pwn(216) : fatal error 107: too many error messages on one line Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase 4 Errors.
-
Das sind extra Enums und jedes Objekt im Inventar ist dann dort aufgelistet. Wenn ich also alle Objekte im Enum auslesen kann und damit die Max der Liste (wie lang die Liste zu dem Zeitpunkt ist) auslesen kann wäre das genau richtig.
-
Ich möchte aus einem Enum herauslesen wie hoch das Maximal ist. Habs mir so gedacht aber das geht nicht:
#define MAX_INVENTAR Inventar_Name
enum Inventar_Name
{
PolosChickenwings[128],
FreddysMargarithaPizaa[128],
Sprunk[128],
Cannabis[128],
CrystalMeth[128],
Heroin[128],
Kokain[128]
}Finde die Funktion zum auszählen nicht falls es nicht leichter geht. Jemand schnelle Hilfe parat?
-
Kann mir jemand das Include errorfrei geben?
-
Ich möchte einen Befehl schreiben (/use [Produkt][Menge])
Kann mir jemand eben einen Blancobefehl dafür erstellen bzw die Grundfunktion?
Hab vergessen wie das ging und finde nichts mit 2 Werten hier. -
Ja erst nicht verstanden sorry :p
-
Edit: Genau das danke
-
Kann man ein Enum in seiner Zeile abfragen?
zB:
Ich will die dritte Stelle eines Enums abfragen und wenn ich etwas da drüber einfüge die neue dritte Stelle mit der selben Funktion abfragen.
-
Jetzt klappt alles, danke!
-
Ah da war der Fehler, ich danke dir!
Irgendwas failt da noch
case DIALOG_LOGIN_1: { if(!response)return CON_CLOSE; new key[128]; //new file[128]; format(file,sizeof(file),"/Accounts/%s.inc",GetName(playerid)); format(key,sizeof(key), dini_Get(file, "key")); if(key[0] != EOS && inputtext[0] != EOS && !strcmp(inputtext, key)) { /*new string[128]; format(Info[playerid][CharacterName1],sizeof(string),dini_Get(file, "CharacterName1")); format(Info[playerid][CharacterName2],MAX_PLAYER_NAME,dini_Get(file, "CharacterName2")); format(Info[playerid][CharacterName3],MAX_PLAYER_NAME,dini_Get(file, "CharacterName3")); format(string,sizeof(string),"%s\n%s\n%s",Info[playerid][CharacterName1],Info[playerid][CharacterName2],Info[playerid][CharacterName3]); print(string); print(Info[playerid][CharacterName1]); print(Info[playerid][CharacterName2]); print(Info[playerid][CharacterName3]); ShowPlayerDialog(playerid,DIALOG_LOGIN_2,DIALOG_STYLE_LIST,"Charaktere:",string,"Login","Abbrechen");*/ new ch[3][MAX_PLAYER_NAME],string[128]; format(Info[playerid][CharacterName1],MAX_PLAYER_NAME,dini_Get(file, "CharacterName1")); format(Info[playerid][CharacterName2],MAX_PLAYER_NAME,dini_Get(file, "CharacterName2")); format(Info[playerid][CharacterName3],MAX_PLAYER_NAME,dini_Get(file, "CharacterName3")); if(Info[playerid][CharacterName1][0] == EOS) ch[0] = "/"; else strcat(ch[0],Info[playerid][CharacterName1]); if(Info[playerid][CharacterName2][0] == EOS) ch[1] = "/"; else strcat(ch[1],Info[playerid][CharacterName2]); if(Info[playerid][CharacterName3][0] == EOS) ch[2] = "/"; else strcat(ch[2],Info[playerid][CharacterName3]); format(string,sizeof(string),"%s\n%s\n%s",ch[0],ch[1],ch[2]); ShowPlayerDialog(playerid,DIALOG_LOGIN_2,DIALOG_STYLE_LIST,"Charaktere:",string,"Login","Abbrechen"); print(string); print(Info[playerid][CharacterName1]); print(Info[playerid][CharacterName2]); print(Info[playerid][CharacterName3]); return 1; } }CodeCharacter free0=1 Character free1=0 Character free2=0 CharacterName1=Arnold CharacterName2=Leer CharacterName3=Leer key=weeder77 Password Given=1
C:\Program Files\Grand Theft Auto San Andreas\gamemodes\ganmore.pwn(535) : warning 219: local variable "ch" shadows a variable at a preceding level
-
Da war das doch nur das Problem das der String leer war. Daher hab ich mir gedacht ich schreib einfach was rein. Hab ich doch so oben erklärt, sorry wenn es nicht zu erkennen war. Ich werde mal dein Code nutzen.
new ch[3][MAX_PLAYER_NAME],string[128];
format(Info[playerid][CharacterName1],MAX_PLAYER_NAME,dini_Get(file, "CharacterName1"));
format(Info[playerid][CharacterName2],MAX_PLAYER_NAME,dini_Get(file, "CharacterName2"));
format(Info[playerid][CharacterName3],MAX_PLAYER_NAME,dini_Get(file, "CharacterName3"));
if(Info[playerid][CharacterName1][0] == EOS) ch[0] = "/";
else strcat(ch[0],Info[playerid][CharacterName1]);
if(Info[playerid][CharacterName2][0] == EOS) ch[1] = "/";
else strcat(ch[1],Info[playerid][CharacterName2]);
if(Info[playerid][CharacterName3][0] == EOS) ch[2] = "/";
else strcat(ch[2],Info[playerid][CharacterName3]);
format(string,sizeof(string),"%s\n%s\n%s",ch[0],ch[1],ch[2]);
ShowPlayerDialog(playerid,DIALOG_LOGIN_2,DIALOG_STYLE_LIST,"Charaktere:",string,"Login","Abbrechen");
print(string);
print(Info[playerid][CharacterName1]);
print(Info[playerid][CharacterName2]);
print(Info[playerid][CharacterName3]);Print:
/
/
/
<null>
<null>
<null> -
if(!response)return CON_CLOSE;
new key[128];
new file[128];
format(file,sizeof(file),"/Accounts/%s.inc",GetName(playerid));
format(key,sizeof(key), dini_Get(file, "key"));
if(key[0] != EOS && inputtext[0] != EOS && !strcmp(inputtext, key))
{
new string[128];
format(Info[playerid][CharacterName1],sizeof(string),dini_Get(file, "CharacterName1"));
format(Info[playerid][CharacterName2],MAX_PLAYER_NAME,dini_Get(file, "CharacterName2"));
format(Info[playerid][CharacterName3],MAX_PLAYER_NAME,dini_Get(file, "CharacterName3"));
format(string,sizeof(string),"%s\n%s\n%s",Info[playerid][CharacterName1],Info[playerid][CharacterName2],Info[playerid][CharacterName3]);
print(string);
print(Info[playerid][CharacterName1]);
print(Info[playerid][CharacterName2]);
print(Info[playerid][CharacterName3]);
ShowPlayerDialog(playerid,DIALOG_LOGIN_2,DIALOG_STYLE_LIST,"Charaktere:",string,"Login","Abbrechen");
return 1;
}Der Pfad stimmt, andere Dinge werden ja auch geladen wie das Passwort.
-
-
Code
Alles anzeigen-------------------------- SA-MP Server: 0.3.7-R2 Exception At Address: 0x76DE72B2 Module: (ntdll.dll) Registers: EAX: 0x0000009F EBX: 0x0000000A ECX: 0x004E5998 EDX: 0x01E65F18 ESI: 0x0000009F EDI: 0x0000009B EBP: 0x0012FCE0 ESP: 0x0012FCCC EFLAGS: 0x00010216 Stack: +0000: 0x01E65F18 0x01E65F04 0x00000128 0xFFFFFFFE +0010: 0x0012FD18 0x0012FD20 0x00498BB8 0x0000009B +0020: 0x0049F510 0x0000007B 0x01E65F18 0x01E65F04 +0030: 0x0000000A 0x004AAE98 0xFFFFFFFF 0x0012FCF4 +0040: 0x0012F8D8 0x0012FE24 0x0049D208 0x004BA7F0 +0050: 0xFFFFFFFF 0x0000000A 0x004991E0 0x0000007B +0060: 0x00404F14 0x0000007B 0x0012FD4C 0x01E65F04 +0070: 0x0000000A 0x0012FD80 0x0132FDA8 0x012444E8 +0080: 0x01E65F01 0x00472DE6 0x00405802 0x0000007B +0090: 0x0000000A 0x00000001 0x012C0B58 0x00024A24 +00A0: 0x004057B0 0x012C0B58 0x012C0B58 0x01E3B018 +00B0: 0x00000087 0x01E414DC 0x004010B6 0x012C0B58 +00C0: 0x01E65F18 0x01E414F4 0x00402B63 0x012C0B58 +00D0: 0x00000008 0x0012FDB8 0x01E65F04 0x00515BF8 +00E0: 0x012C0B58 0x00000001 0x00000000 0x00000000 +00F0: 0x00024A24 0x00024A10 0x00024A70 0x00020A74 +0100: 0x00024A4C 0x00020A74 0x01E3B018 0x01E414F4 +0110: 0x00000000 0x01E3A7A8 0x000064DC 0x0046F679 +0120: 0x012C0B58 0x0012FE04 0xFFFFFFFF 0x01639260 +0130: 0xFFFFFFFF 0x00000001 0x00000000 0x0048E0C2 -------------------------- Loaded Modules: samp-server.exe A: 0x00400000 - 0x00519000 (C:\Program Files\Grand Theft Auto San Andreas\samp-server.exe) ntdll.dll A: 0x76DA0000 - 0x76EE2000 (C:\Windows\SYSTEM32\ntdll.dll) kernel32.dll A: 0x76A40000 - 0x76B15000 (C:\Windows\system32\kernel32.dll) KERNELBASE.dll A: 0x74EC0000 - 0x74F0B000 (C:\Windows\system32\KERNELBASE.dll) SHELL32.dll A: 0x75560000 - 0x761AC000 (C:\Windows\system32\SHELL32.dll) msvcrt.dll A: 0x76F40000 - 0x76FEC000 (C:\Windows\system32\msvcrt.dll) SHLWAPI.dll A: 0x767D0000 - 0x76827000 (C:\Windows\system32\SHLWAPI.dll) GDI32.dll A: 0x761D0000 - 0x7621E000 (C:\Windows\system32\GDI32.dll) USER32.dll A: 0x768B0000 - 0x76979000 (C:\Windows\system32\USER32.dll) LPK.dll A: 0x76EF0000 - 0x76EFA000 (C:\Windows\system32\LPK.dll) USP10.dll A: 0x76980000 - 0x76A1D000 (C:\Windows\system32\USP10.dll) WSOCK32.dll A: 0x6DCD0000 - 0x6DCD7000 (C:\Windows\system32\WSOCK32.dll) WS2_32.dll A: 0x75080000 - 0x750B5000 (C:\Windows\system32\WS2_32.dll) RPCRT4.dll A: 0x76230000 - 0x762D2000 (C:\Windows\system32\RPCRT4.dll) NSI.dll A: 0x76F30000 - 0x76F36000 (C:\Windows\system32\NSI.dll) WINMM.dll A: 0x6FCB0000 - 0x6FCE2000 (C:\Windows\system32\WINMM.dll) IMM32.DLL A: 0x76A20000 - 0x76A3F000 (C:\Windows\system32\IMM32.DLL) MSCTF.dll A: 0x76C70000 - 0x76D3D000 (C:\Windows\system32\MSCTF.dll) mswsock.dll A: 0x746A0000 - 0x746DC000 (C:\Windows\system32\mswsock.dll) wshtcpip.dll A: 0x74190000 - 0x74195000 (C:\Windows\System32\wshtcpip.dll) NLAapi.dll A: 0x73760000 - 0x73770000 (C:\Windows\system32\NLAapi.dll) napinsp.dll A: 0x71550000 - 0x71560000 (C:\Windows\system32\napinsp.dll) sechost.dll A: 0x761B0000 - 0x761C9000 (C:\Windows\SYSTEM32\sechost.dll) pnrpnsp.dll A: 0x6EC40000 - 0x6EC52000 (C:\Windows\system32\pnrpnsp.dll) wshbth.dll A: 0x6EC30000 - 0x6EC3D000 (C:\Windows\system32\wshbth.dll) WLIDNSP.DLL A: 0x70B70000 - 0x70B97000 (C:\Program Files\Common Files\Microsoft Shared\Windows Live\WLIDNSP.DLL) ADVAPI32.dll A: 0x75110000 - 0x751B1000 (C:\Windows\system32\ADVAPI32.dll) PSAPI.DLL A: 0x76220000 - 0x76225000 (C:\Windows\system32\PSAPI.DLL) DNSAPI.dll A: 0x74560000 - 0x745A4000 (C:\Windows\system32\DNSAPI.dll) winrnr.dll A: 0x6EBF0000 - 0x6EBF8000 (C:\Windows\System32\winrnr.dll) IPHLPAPI.DLL A: 0x72BD0000 - 0x72BEC000 (C:\Windows\system32\IPHLPAPI.DLL) WINNSI.DLL A: 0x72BB0000 - 0x72BB7000 (C:\Windows\system32\WINNSI.DLL) rasadhlp.dll A: 0x70B60000 - 0x70B66000 (C:\Windows\system32\rasadhlp.dll)
String ist einfach leer.