Da wäre es vielleicht ganz sinnvoll einen neuen Thread aufzumachen, am besten mit dem dazugehörigen Code und ein paar Bildern, oder noch besser, einem Video. Ich denke nicht, dass es in diesem Topic angebracht ist, das würde dem "Kleine Scripting Fragen" nicht mehr entsprechen.
[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
-
-
Habe hier ein kleines Problemchen
Bei den Code:
stock BR_GivePlayerWeapon(playerid, Weaponid, Munni)
{
new Slot = GetSlotForWeapon(Weaponid);
PlayerInfo[playerid][Weapon][Slot] = Weaponid;
PlayerInfo[playerid][Ammo][Slot] += Munni;
if(debuggen){printf("[Weapon] User: %s | Waffe: %d | Ammo: %d | Slot: %d",PlayerInfo[playerid][name],PlayerInfo[playerid][Weapon][Slot],PlayerInfo[playerid][Ammo][Slot],Slot);}
return _GivePlayerWeapon(playerid, Weaponid, Munni);
}
Bekomme ich die Waffe auch der debug stimmt
Aber komischerweise werde ich gebannt wegen "Waffenhack"
Der Code dazu ist der:
for (new i = 0; i < 13; i++)
{
new Weap, Amm;
GetPlayerWeaponData(playerid, i, Weap, Amm);
if(PlayerInfo[playerid][Weapon][i] == Weap){
if(PlayerInfo[playerid][Ammo][i] > Amm){
format(str,128,"Munition´s Cheat %d Schuss",PlayerInfo[playerid][Ammo][i]-Amm);
BanUser(playerid, str);
}else{
PlayerInfo[playerid][Ammo][i] = Amm;
}
}else{
format(str,128,"Waffenhack %s",getGunName(Weap));
BanUser(playerid, str);
PlayerInfo[playerid][Weapon][i] = 0;
PlayerInfo[playerid][Ammo][i] = 0;
}
}
Hat da wer ne idee wiso das so ist? -
if(PlayerInfo[playerid][Ammo][i] > Amm){
Das muss andersrum sein. Wenn die derzeitige Ammo die der Spieler hat größer ist, als die, die ihm gegeben wurde, dann wird er gebannt.if(PlayerInfo[playerid][Ammo][i] < Amm){
Und somit auch:
format(str,128,"Munition´s Cheat %d Schuss",Amm-PlayerInfo[playerid][Ammo][i]);Du bannst ihn, wenn er weniger ammo hat, als ihm gegeben wurde.
-
Den fehler hab ich schon gefunden der bannt aber wegen Waffenhack nicht wegen ammo
-
Hätte ich mal richtig gelesen.
Gut, aber da kann ich keinen Fehler sehen, abgesehen davon, dass die Funktion GetPlayerWeaponData an sich zig Bugs hat, die bewiesen und gemeldet worden sind, jedoch hat sich Kye/Kalcor nie darum gekümmert.
Setz einfach mal einen debug unter die Funktion:printf("[Weapon] User: %s | PWaffe: %d | GWaffe: %d | Slot: %d",PlayerInfo[playerid][name],PlayerInfo[playerid][Weapon][i],Weap,i);
Ich könnte mir vorstellen, dass der Grund für den ban der ist, dass du einen waffe leergeschossen hast. Dann würde ja Weap = 0 (?) sein, in deiner Variable steht aber noch die Waffen ID. Das könntest, und solltest du auch wenn es nicht der Fehler ist, berücksichtigen:
GetPlayerWeaponData(playerid, i, Weap, Amm);
if(Amm == 0) continue;
Sprich er geht einen Slot weiter, wenn keine Ammo im Slot ist, entsprechend keiner Waffe. -
Hallo,
hat einer vielleicht eine Ahnung wieso bei mir das Minusgeld nicht richtig geladen wird ?
Wenn in der Datenbank zum Beispiel -5000 steht, hat der Spieler beim Einloggen nur -1 auf der Hand. -
Oben steht der Error und hier pastebin: http://pastebin.com/F15g5aWv
Habe schonmal versucht die arrays frei gelassen also anstatt [7] so [] kommt immer noch der gleiche Fehler
Fehler soll in reihe 13 sein.
-
new Float:DtcSonstiges[AUTOHAUSER][5][7] = {
zu:
new Float:DtcSonstiges[AUTOHAUSER][5][4] = {Falls noch weitere Fehler sind, bzw der Fehler noch besteht, poste bitte das gesamte Array.
-
new Float:DtcSonstiges[AUTOHAUSER][5][7] = {
zu:
new Float:DtcSonstiges[AUTOHAUSER][5][4] = {Falls noch weitere Fehler sind, bzw der Fehler noch besteht, poste bitte das gesamte Array.
habe ich schon ausprobiert gleicher Fehler.
Hier nochmal das ganze http://pastebin.com/Gy2hjeiw Fehler bei 54 -
habe ich schon ausprobiert gleicher Fehler.
Schreib es mal so:new Float:DtcSonstiges[][][] = {
mfg.
-
-
Schreib es mal so:
Wenn er das jetzt macht und dann AUTOHAUSER in einer schleife nutzt, schmiert ihm der Code wegArray out of Bounds.
Eher müsste er AUTOHAUSER auf die Anzahl anpassen -
Ich erklär dir das mal kurz, warum das so ist, sonst weißt du es beim nächsten Mal wieder nicht.^^
new Float:DtcParkPlatz[7][4][4] = {
new Float:DtcSonstiges[7][5][4] = {
Dies wären die richtigen Angaben (bzw. so wie Kaliber es gemacht hat, wobei ich das da besser finde, es ist übersichtlicher und verhindert Fehler in großen Arrays, meine Meinung).Nun, warum?
DtcSonstiges:
[7] bedeutet, dass wir 7 Abteile haben
[5] gibt nun an, dass jeder Abteil 5 Zeilen hat
[4] sagt schließlich, dass jede Zeile 4 Parameter hat.Diese Zahlen müssen immer so stimmen, sonst bekommst du den Error 052.
Zitaterror 052: multi-dimensional arrays must be fully initialized
Das heißt übersetzt: Multidimensionale Arrays (in deinem Fall: 3 Dimensionen) müssen vollständig eingeleitet werden. => Es darf keine "Lücke" vorhanden sein, es muss alles gefüllt sein. Es müssen 7 Abteile vorhanden sein, jedes diese Abteile muss genau 5 Zeilen haben, wovon jede wiederum genau 4 Parameter hat. -
Ich erklär dir das mal kurz, warum das so ist, sonst weißt du es beim nächsten Mal wieder nicht.^^
new Float:DtcParkPlatz[7][4][4] = {
new Float:DtcSonstiges[7][5][4] = {
Dies wären die richtigen Angaben (bzw. so wie Kaliber es gemacht hat, wobei ich das da besser finde, es ist übersichtlicher und verhindert Fehler in großen Arrays, meine Meinung).Nun, warum?
DtcSonstiges:
[7] bedeutet, dass wir 7 Abteile haben
[5] gibt nun an, dass jeder Abteil 5 Zeilen hat
[4] sagt schließlich, dass jede Zeile 4 Parameter hat.Diese Zahlen müssen immer so stimmen, sonst bekommst du den Error 052.
Das heißt übersetzt: Multidimensionale Arrays (in deinem Fall: 3 Dimensionen) müssen vollständig eingeleitet werden. => Es darf keine "Lücke" vorhanden sein, es muss alles gefüllt sein. Es müssen 7 Abteile vorhanden sein, jedes diese Abteile muss genau 5 Zeilen haben, wovon jede wiederum genau 4 Parameter hat.error 053: exceeding maximum number of dimensions
-
Hast du einen vierdimensionalen Array gemacht? Also ich hatte die Arrays kompiliert, hat getan.
Zeig mal den Code wie du ihn jetzt hast. -
error 053: exceeding maximum number of dimensions
Mehr als 3 Dimensionen ( [][][] ) sind in PAWN nicht Möglich und werden mit dem 3. zusammen gefasst -
Warum funktioniert der folgende Code nicht?
new zeichen[26][] = {"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"};
new i;
stock randomword(len)
{
new rand[len];//FEHLERZEILE 44
for(i=0;i<len;i++)
{
//strcat(rand,zeichen[random(25)],len);
strins(rand,zeichen[random(26)],i,len);
}
return rand;
}
Ich bekomme 4 Errors
C:\Users\ALEX_DSL\Desktop\Spiele\GTA SA\SAMP Server\gamemodes\Testverschl.pwn(44) : error 008: must be a constant expression; assumed zero
C:\Users\ALEX_DSL\Desktop\Spiele\GTA SA\SAMP Server\gamemodes\Testverschl.pwn(44) : error 009: invalid array size (negative, zero or out of bounds)
C:\Users\ALEX_DSL\Desktop\Spiele\GTA SA\SAMP Server\gamemodes\Testverschl.pwn(44) : error 036: empty statement
C:\Users\ALEX_DSL\Desktop\Spiele\GTA SA\SAMP Server\gamemodes\Testverschl.pwn(44) : fatal error 107: too many error messages on one lineKann ich in Pawn einem String entwa keine "dynamische Länge" zuweisen?
/edit: Hab ne Lösung gefunden....ich weis dem String eine Länge von 20 zu und nutze eben nur soviel wie groß eben "len" istAber ich hätte trotzdem gerne eine Antwort^^ -
ich suche ein Editor,womit man zb eine kleine Sirene also Undercover Sirene ans auto machen kann.
Ich würde die SuFu gerne nutzen...aber kp nach was ich suchen sollKennt jmd nen Guten Editor?
lg
-
Warum funktioniert der folgende Code nicht?
Aber ich hätte trotzdem gerne eine Antwort^^
Ganz einfach. Wie dir die Error-Ausgabe schon sagt, ein Array muss mit einer konstanten Größe deklariert werden. Du weist dem Array eine variable Größe zu (len), daher weiß der Kompiler nicht, wie viel Platz er reservieren muss. Arrays müssen immer konstant deklariert werden, das heißt mit "#define" oder einer Zahl, wobei du bei define eben ein Wort diese Zahl ist und darstellt.ich suche ein Editor,womit man zb eine kleine Sirene also Undercover Sirene ans auto machen kann.
-
Würde gerne eine SendClientMessageToAdmins Funktion haben.
Kann ich dafür einen Stock erstellen oder muss ich ein Include schreiben? -
stock SendClientMessageToAdmins(color,message[])
{
for(new i = 0; i < GetMaxPlayers(); i++) // Zeile 163!
{
if(IsPlayerConnected(i) && SpielerInfo[i][pAdmin] >= 1)
{
SendClientMessage(i,color,message);
}
}
}xD Nen stock tuts auch =D
L.G.
heyho