[SAMMELTHREAD] Kleine Scripting Fragen
- Rafelder
- Unerledigt
-
-
Saphire:
Gehen wir mal die Funktion durch:Beispiel:
ACNewMoney = 5000$
money = 5000$
ACNewMoney[playerid] = ACNewMoney[playerid] + money;//ACNewMoney[playerid] ist somit nun 10.000$.
return GivePlayerMoney(playerid,ACNewMoney[playerid]); //Hier erhält er nun ACNewMoney[playerid], was, wie wir festgestellt haben, nun 10.000$ ist und nicht die 5000$, die er erhalten soll.Das Geld hat sich somit verdoppelt.
Du musst dem Spieler nur money geben. -
-
Dome_:
Zeig mal dein Enum für diese Kaufliste Variable.
enum ahModell
{
Name[128],
Autohaus,
Modelid,
Carid,
Preis,
Reparatur,
Float:pos_x,
Float:pos_y,
Float:pos_z,
Float:z_angle,
};new Kaufliste[45][ahModell] =
{
/////////////////////////////Intercars//////////////////////////////////
{"Tampa",0,549,-1,6600,100,766.3573,-1378.6475,13.3541,269.4215}, //intercars
{"Bobcat",0,422,-1,8600,100,766.2212,-1373.8983,13.5806,269.0165},
{"Burrito",0,482,-1,12000,640,766.4193,-1368.8649,13.6737,266.4977},
{"Nebula",0,516,-1,12500,150,766.1318,-1364.1688,13.3903,269.4459},
{"Phoenix",0,603,-1,13500,250,766.2344,-1359.5094,13.4226,268.1375},
{"Savanna",0,567,-1,13000,150,783.5147,-1367.2809,13.4088,92.8256},
{"Slamvan",0,535,-1,30000,300,783.8260,-1356.5822,13.3273,90.1728},
{"Voodoo",0,412,-1,25500,250,782.9839,-1335.4767,13.4323,88.8266},
{"Tornado",0,576,-1,15000,175,783.2136,-1377.6055,13.2309,88.6873},
{"Broadway",0,575,-1,9000,200,783.5681,-1372.7090,13.2070,94.9154},
{"Balde",0,536,-1,150,15000,783.5160,-1361.8856,13.3241,89.2535},
{"Remington",0,534,-1,12000,650,783.4966,-1351.3638,13.2953,88.0422},
{"Buccaneer",0,518,-1,55000,1500,783.2993,-1346.0609,13.2515,79.4080},
{"Esperanto",0,419,-1,8000,700,783.4002,-1340.4026,13.4123,91.5259},
{"Hustler",0,545,-1,12500,300,771.0963,-1333.1886,13.2466,179.9259},
{"Blista",0,496,-1,4500,350,766.1276,-1333.2665,13.2896,179.4678},
{"Comet",0,480,-1,18000,80,761.2780,-1333.2695,13.3010,176.7838},
{"Elegy",0,562,-1,20000,80,756.5835,-1333.0814,13.1270,182.4252},
{"Huntley",0,579,-1,100000,1000,751.5070,-1334.0564,13.5520,182.1816},
{"Mesa",0,500,-1,8000,250,746.6382,-1333.4875,13.6658,179.9870},
{"Moonbeam",0,418,-1,15000,245,741.8511,-1333.5743,13.6650,180.3323},//intercars ende 21
/////////////////////////////////Grottis//////////////////////////////////////
{"Buffalo",1,402,-1,155000,350,558.8314,-1289.5635,17.0566,359.8489}, //Grottis
{"Bullet",1,541,-1,180000,450,537.7307,-1289.6569,16.8788,359.9076},
{"Cheetah",1,415,-1,185000,360,548.5411,-1289.2894,17.0168,6.7969},
{"Banshee",1,429,-1,23000,150,563.1986,-1289.0668,16.9284,2.2992},
{"Infernus",1,411,-1,50000,120,553.5667,-1289.6110,16.9802,4.0815},
{"Turismo",1,451,-1,300000,680,542.7256,-1289.3339,16.9663,3.7311},
{"Jester",1,559,-1,260000,150,532.2188,-1290.0289,16.9184,8.3362},
{"Sultan",1,560,-1,27500,100,527.2485,-1290.7981,16.8880,1.5522},//Grottis Ende 8
//////////////////////////////////2RadShop////////////////////////////////////
{"Wayfarer",1,586,-1,11000,300,2117.6641,-1135.7371,24.7074,244.4122},
{"BF-400",1,581,-1,12500,350,2117.6621,-1133.0946,24.7906,263.1818},
{"NRG-500",1,522,-1,60000,450,2117.3479,-1130.3920,24.7793,255.9238},
{"BMX",1,481,-1,1500,260,2118.0095,-1127.1219,24.7798,253.3480},
{"Sanchez",0,468,-1,20000,75,2137.8049,-1139.0826,25.1447,104.7127},
{"Freeway",0,463,-1,12000,100,2137.4783,-1136.2334,25.2795,105.0719},
{"FRC-900",2,521,-1,15000,150,2117.8870,-1123.9498,24.8825,269.8976},
{"PCJ-600",2,461,-1,10000,2002136.4927,-1127.3752,25.1272,102.8394},
{"Faggio",2,462,-1,500000,200,2137.6379,-1131.5999,25.2480,108.6290},//9
////////////////////////////////Flugplatz///////////////////////////////////
{"Maverick",2,487,-1,650000,200,1888.9150,-2624.0420,13.6997,0.2435},
{"Dodo",2,593,-1,150000,200,1822.2716,-2625.2224,14.0106,359.9549},
{"Shamal",2,519,-1,1200000,250,1754.4678,-2625.8228,14.4726,354.9949},//3
///////////////////////////////Gold/Traktoren/////////////////////////////
{"Flatbed",4,455,-1,150000,250,-589.8594,-1078.3411,23.1886,241.0025},
{"Willard",4,529,-1,25000,250,585.7016,-1072.6453,22.9929,235.4666},
{"Traktore",4,531,-1,50000,150,-582.1254,-1066.7961,23.3816,235.8263},
{"DFT-300",4,578,-1,120000,300,-563.4022,-1039.2424,24.7588,237.1086}//4
}; -
Float:z_angle,
Das Komma muss weg, es ist das letzte Element im Enum.
Hmm, ansonsten finde ich nichts.. vielleicht weiß ein anderer bescheid.
Kannst ja ein Thema erstellen, wo man aktiv versuchen kann dir zu helfen. -
return ShowPlayerDialog(playerid,Crap,DIALOG_STYLE_LIST,"Test",""Rot_"Crap","Auswählen","Abbrechen");
//'Rot_' ist so definiert:
#define Rot_ {FF0000}
Wie kann ich Dialoge farbig machen?
Wie ich es oben gepostet habe, geht es leider nicht
Kann man das überhaupt mit einer definition machen, oder muss man es immer so nutzen: '{FARBCODE}'?
-
Alles anzeigen
Hab einen kleinen Fehler im Chat wenn ich diesen Command benutze:
CMD:kick( playerid, params[])
{
if(GetPVarInt(playerid,"Level")<2) return SendClientMessage(playerid, -1, "Du musst ein "COLOR_BLUE"Administrator Level 2 {FFFFFF}sein, um diese Funktion nutzen zu können.");
if(sscanf( params, "uS", params[0], params[1])) return SendClientMessage(playerid, -1, ""COLOR_GREY"Verwendung: /kick <Name/ID> <Grund>");
if(!IsPlayerConnected(params[0])) return SendClientMessage(playerid, -1, ""COLOR_GREY"Dieser Spieler ist nicht online.");new String[220];
format(String, sizeof String, "%s ( %s | ID: %i ) hat %s ( %s | ID: %i ) gekickt, Grund: %s",pName(playerid),GetPlayerLevelName(playerid),playerid,pName(params[0]),GetPlayerLevelName(params[0]),params[0],params[1]);
SendClientMessageToAll(-1, String);
SetTimerEx("KickPlayer", 1000, false, "i", playerid);
return 1;
}Kann mir da echt keiner helfen ?

-
Was ist denn überhaupt dein Problem ? Meinst du weil das "A" am anfang fehlt?
Etwas genauer wäre schon nicht schlecht.Wenns so ist, erhöhe mal die array größe.
-
Hab einen kleinen Fehler im Chat wenn ich diesen Command benutze:
CMD:kick( playerid, params[])
{
new string[144], pID;
if(GetPVarInt(playerid,"Level")<2) return SendClientMessage(playerid, -1, "Du musst ein "COLOR_BLUE"Administrator Level 2 {FFFFFF}sein, um diese Funktion nutzen zu können.");
if(sscanf( params, "us[64]", pID, string)) return SendClientMessage(playerid, -1, ""COLOR_GREY"Verwendung: /kick <Name/ID> <Grund>");
if(!IsPlayerConnected(pID)) return SendClientMessage(playerid, -1, ""COLOR_GREY"Dieser Spieler ist nicht online.");format(string, sizeof string, "%s ( %s | ID: %i ) hat %s ( %s | ID: %i ) gekickt, Grund: %s",pName(playerid),GetPlayerLevelName(playerid),playerid,pName(pID),GetPlayerLevelName(pID),pID,string);
SendClientMessageToAll(-1, string);
SetTimerEx("KickPlayer", 1000, false, "i", pID);
return 1;
}
Variablen schreibt übrigens jeder Programmierer am Anfang klein.Und nutzt doch bitte http://www.tinypic.com und nicht diese beknackte pic-upload Seite, die voll mit Werbung ist.

-
Danke für deine Hilfe, Jeffry. Werd ich tun.

Aber nun kommt inGame immer die Zeile "Verwendung: [ ... ]" und es passiert sonst nichts
-
-
Aber nun kommt inGame immer die Zeile "Verwendung: [ ... ]" und es passiert sonst nichts
Nicht sscanf nutzen, das ist Müll. Meine Meinung.CMD:kick( playerid, params[])
{
new string[144], pID, tmp[256], tmp2[256], idx;
tmp = strtok(params, idx); tmp2 = strtok(params, idx);
if(!strlen(tmp2)) return SendClientMessage(playerid, -1, ""COLOR_GREY"Verwendung: /kick <Name/ID> <Grund>");
if(GetPVarInt(playerid,"Level")<2) return SendClientMessage(playerid, -1, "Du musst ein "COLOR_BLUE"Administrator Level 2 {FFFFFF}sein, um diese Funktion nutzen zu können.");
if(!IsNumeric(tmp)) pID = ReturnPlayerID(tmp);
else pID = strval(tmp);
if(!IsPlayerConnected(pID)) return SendClientMessage(playerid, -1, ""COLOR_GREY"Dieser Spieler ist nicht online.");format(string, sizeof string, "%s ( %s | ID: %i ) hat %s ( %s | ID: %i ) gekickt, Grund: %s",pName(playerid),GetPlayerLevelName(playerid),playerid,pName(pID),GetPlayerLevelName(pID),pID,params[strlen(tmp)+1]);
SendClientMessageToAll(-1, string);
SetTimerEx("KickPlayer", 1000, false, "i", pID);
return 1;
}
strtok und solche Funktionen können viel flexibler eingesetzt werden und ich hatte damit noch nie unerklärliche Probleme.Falls dir die Funktionen fehlen:
Spoiler anzeigen //Aus der dutils.inc
stock strtok(const string[], &index,seperator=' ')
{
new length = strlen(string);
new offset = index;
new result[256];
while ((index < length) && (string[index] != seperator) && ((index - offset) < (sizeof(result) - 1)))
{
result[index - offset] = string[index];
index++;
}Spoiler anzeigen result[index - offset] = EOS;
if ((index < length) && (string[index] == seperator))
{
index++;
}
return result;
}Spoiler anzeigen stock ReturnPlayerID(PlayerName[]) //©Jeffry
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if(!strcmp(pName(i),PlayerName, true)) return i;
}
}
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if(strfind(pName(i),PlayerName,true)!=-1) return i;
}
}
return INVALID_PLAYER_ID;
}Spoiler anzeigen stock IsNumeric(string[])
{
for (new i = 0, j = strlen(string); i < j; i++)
{
if ((string[i] > '9' || string[i] < '0')) return 0;
}
return 1;
} -
Hey,
habe eine Animation gemacht, wo der Spieler nachlädt, um die Nachladezeit ein wenig zu erhöhen.
Jedoch, wenn ich jetzt z.B. nach vorne gehe, und dann nachladen muss, dann geht der Spieler wegen der Animation automatisch weiter.
Kann man das irgendwie ändern, dass der Spieler dann normal stehen bleibt, wenn er sich gerade bewegt und er nachladen muss?Hier noch mal in nem Video:
Externer Inhalt www.youtube.comInhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt. -
Das Laufen kommt ja von der Animation, halte mal Ausschau nach einer Alternative
-
Hmm.. habe mir mal eben die Animationen ausgeben lassen.. Wenn man jedoch normal nachlädt, wird keine Animation ausgegeben ( standart nachladen )
-
Wo liegt in diesen Zeilen:
new string[50];
SetPVarInt(playerid,"Bankkonto",GetPVarInt(playerid,"Bankkonto",=+geld)); //errorzeile
format(string,sizeof(string),"Bankangestellte: Die %s$ wurden erfolgreich auf ihr Konto gebucht.",geld);
SendClientMessage(playerid,COLOR_BLAU,string);
return 1;dieser error:
Zitaterror 029: invalid expression, assumed zero
Bin gerade zu doof den Fehler zu finden

-
new string[50];
SetPVarInt(playerid,"Bankkonto",GetPVarInt(playerid,"Bankkonto")+geld);
return format(string,50,"Bankangestelle: Die %s€ wurden erfolgreich auf ihr Konto gebucht!",geld),SendClientMessage(playerid,COLOR_BLAU,string);So müsste es funktionieren.
-
new string[50];
SetPVarInt(playerid,"Bankkonto",GetPVarInt(playerid,"Bankkonto")+geld);
return format(string,50,"Bankangestelle: Die %s€ wurden erfolgreich auf ihr Konto gebucht!",geld),SendClientMessage(playerid,COLOR_BLAU,string);
1. 50 Zeichen werden da nicht reichen
2. Geld ist kein String
new string[80];
SetPVarInt(playerid,"Bankkonto",GetPVarInt(playerid,"Bankkonto")+geld);
return format(string,50,"Bankangestelle: Die %d€ wurden erfolgreich auf ihr Konto gebucht!",geld),SendClientMessage(playerid,COLOR_BLAU,string); -
Ich habe das einfach korrigiert und etwas kürzer geschrieben.
Die anderen Fehler hätte er auch selber finden können
-

Warum zeigt es mir nur einen Teil der Box an ???
CMD:teambefehle(playerid, params[])
{
if(GetPVarInt( playerid, "Level" ) < 0 ) return SendClientMessage(playerid, -1, "Du musst mindestens ein "COLOR_BLUE"Supporter {FFFFFF}sein, um diese Funktion nutzen zu können.");new CBox[912];
format(CBox, sizeof CBox, "{FFFFFF}Folgende Befehle stehen zur Verfügung:\n\n\n\
Level 0 - ( "Level0" )\n\
/cmd1 /cmd2 /cmd3\n\n\
Level 1 - ( "Level1" )\n");
format(CBox, sizeof CBox, "/cmd1 /cmd2 /cmd3\n\n\
Level 2 - ( "Level2" )\n\
/cmd1 /cmd2 /cmd3\n\n");
format(CBox, sizeof CBox, "%sLevel 3 - ( "Level3" )\n\
/cmd1 /cmd2 /cmd3\n\n\
Level 4 - ( "Level4" )\n");
format(CBox, sizeof CBox, "/cmd1 /cmd2 /cmd3\n\n\
Level 5 - ( "Level5" )\n\
/cmd1 /cmd2 /cmd3\n\n");
format(CBox, sizeof CBox, "%sLevel 6 - ( "Level6" )\n\
/cmd1 /cmd2 /cmd3\n\n", CBox);
ShowPlayerDialog( playerid, INFO_BOX, DIALOG_STYLE_MSGBOX, "Team Befehle", CBox, "Schließen", "");
return 1;
}(Mache so oft format, da Errors kommen werden, wenn ich Farben benutze)
-
Andreaas: Die Variable hat nur eine Größe von 912 Zeichen, der Text hat aber 988 Zeichen, daher wird der Text abgeschnitten.
Außerdem überschreibst Du mir jedem Format die Variable.Mach es ab dem zweiten Format nach diesem Beispiel:
format(CBox, sizeof CBox, "%s\nTEXT", CBox);//E: Sehe gerade sogar noch, dass noch mehr falsch ist.
Du machst innerhalb der Anführungszeichen noch mal Anführungszeichen, was nicht funktionieren kann.
-