Was willst du denn überhaupt machen?
Beiträge von Jeffry
-
-
ocmd:usecode(playerid, params[])
{
if(!params[0]) return SendClientMessage(playerid, 0xFF0000FF, "/usecode [Code]");
new code[40];
format(code, sizeof(code), "/codes/%s.txt", params);
if(!fexist(code)) return SendClientMessage(playerid, 0xFF0000FF, "Code existiert nicht.");
new money = dini_Int(code, "Geld");
GivePlayerMoney(playerid, money);
fremove(code);
return 1;
} -
Und wenn er das eingibt wie mache ich das das er das bekommt also ich weiß das es gespeichert wird
Wie bitte?
Ich hab kein Wort verstanden. -
Ich bin davon ausgegangen, dass du das noch änderst, ich kenn ja deine Deklarationen nicht.
Hier ein Beispiel:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == DIALOG_ITEMS)
{
if(response)
{
switch(listitem)
{
case 0: ShowPlayerDialog(playerid, DIALOG_ITEMS_MED, DIALOG_STYLE_LIST, "Medicin", "Medkit\nBandage", "Ok", "Ende");
case 1: ShowPlayerDialog(playerid, DIALOG_ITEMS_FOOD, DIALOG_STYLE_LIST, "Food & Drink", "Tomate\nGurke", "Ok", "Ende");
case 2: ShowPlayerDialog(playerid, DIALOG_ITEMS_TOOL, DIALOG_STYLE_LIST, "Tools", "Map\nToolbox", "Ok", "Ende");
}
}
return 1;
}if(dialogid == DIALOG_ITEMS_MED)
{
if(response)
{
switch(listitem)
{
case 0: ShowPlayerDialog(playerid, DIALOG_EXPLANATION, DIALOG_STYLE_MSGBOX, "Explanation", "Das ist die Beschreibung", "Ok", "");
case 1: ShowPlayerDialog(playerid, DIALOG_EXPLANATION, DIALOG_STYLE_MSGBOX, "Explanation", "Das ist ein ...", "Ok", "");
case 2: ShowPlayerDialog(playerid, DIALOG_EXPLANATION, DIALOG_STYLE_MSGBOX, "Explanation", "Das ist ein ...", "Ok", "");
}
}
return 1;
}
if(dialogid = DIALOG_ITEMS_FOOD)
{
//...
}
return 0;
} -
Das gleiche Problem nur anders? Wie geht denn das?
Poste deine "BlitzDelete" Funktion. Je nach dem wie du die aufgebaut hast muss man die oder den Timer ändern.
Ist sonst noch was falsch? -
Mach die Größe des Strings in dem du die Uhrzeit formatierst um 1 größer.
Ein String mit 5 Zeichen muss 6 groß sein, wegen dem EOS (End Of String). -
ocmd:createcode(playerid, params[])
{
if(!params[0]) return SendClientMessage(playerid, 0xFF0000FF, "/createcode [Geld]");
new code[40], str[145];
format(code, sizeof(code), "%04d-%04d-%04d-%04d", random(10000), random(10000), random(10000), random(10000));
format(str, sizeof(str), "Gutscheincode : %s",code);
SendClientMessage(playerid,ROT,str);
format(code, sizeof(code), "/codes/%s.txt", code);
dini_Create(code);
dini_IntSet(code, "Geld", strval(params));
return 1;
} -
Sehr gut!
Never Change a running System. Wenn es geht, lass es so.
Das mit den 1000 Objekten ist so, dass nur 1000 Objekte angezeigt werden können, also die die in der Nähe aller Spieler sind.
Du kannst auch 100000 CreateDynamicObjects haben, solange sie nur weit genug voneinander weg sind. An sich gibt es kein Limit von CreateDynamicObjects, außer vielleicht der RAM des Servers. -
Da fehlen zwei Klammern:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == DIALOG_ITEMS)
{
if(response)
{
switch(listitem)
{
case 0: ShowPlayerDialog(playerid, DIALOG_ITEMS, DIALOG_STYLE_LIST, "Obst", "Apfel\nBirne", "Ok", "Ende");
case 1: ShowPlayerDialog(playerid, DIALOG_ITEMS, DIALOG_STYLE_LIST, "Gemüse", "Tomate\nGurke", "Ok", "Ende");
case 2: ShowPlayerDialog(playerid, DIALOG_ITEMS, DIALOG_STYLE_LIST, "Baum", "Fichte\nBuche", "Ok", "Ende");
}
}
return 1;
}if(dialogid == DIALOG_ITEMS)
{
if(response)
{
switch(listitem)
{
case 0: ShowPlayerDialog(playerid, DIALOG_ITEMS, DIALOG_STYLE_MSGBOX, "Explanation", "Das ist ein ...", "Ok", "");
case 1: ShowPlayerDialog(playerid, DIALOG_ITEMS, DIALOG_STYLE_MSGBOX, "Explanation", "Das ist ein ...", "Ok", "");
case 2: ShowPlayerDialog(playerid, DIALOG_ITEMS, DIALOG_STYLE_MSGBOX, "Explanation", "Das ist ein ...", "Ok", "");
}
}
return 1;
}
return 0;
} -
Hast du es auch korrekt in das OnDialogResponse Callback geschrieben?
Falls du es nicht behoben kommst, poste bitte den Code der zum OnDialogResponse Callback gehört. -
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]){
if(dialogid == DIALOG_TID){
if(response){
if(strlen(inputtext) == 28){
format(SpielerInfo[playerid][pTID], 128, inputtext);
new string[145];
format(string, 145, "[Info] Deine Teamspeak-ID wurde erfolgreich in '%s' geändert.", SpielerInfo[playerid][pTID]);
SendClientMessage(playerid, COLOR_GREY, string);
}else{
SendClientMessage(playerid, COLOR_GREY, "[Info] Die Teamspeak-ID ist ungültig. Bitte versuche es erneut oder wende dich an den Support.");
}
}
}
}format ist das Zauberwort.
-
ocmd:createcode(playerid, params[])
{
new code[40], str[145];
format(code, sizeof(code), "%04d-%04d-%04d-%04d", random(10000), random(10000), random(10000), random(10000));
format(str, sizeof(str), "Gutscheincode : %s",code);
SendClientMessage(playerid,ROT,str);
format(code, sizeof(code), "/codes/%s.txt", code);
dini_Create(code);
dini_IntSet(code, "Geld", 1000);
return 1;
}Hatte es im anderen Thread bereits geändert.
-
Nach gleichem Prinzip:
if(dialogid == DIALOG_ITEMS)
{
if(response)
{
switch(listitem)
{
case 0: ShowPlayerDialog(playerid, DIALOG_ITEMS_UNTER1, DIALOG_STYLE_LIST, "Obst", "Apfel\nBirne", "Ok", "Ende");
case 1: ShowPlayerDialog(playerid, DIALOG_ITEMS_UNTER2, DIALOG_STYLE_LIST, "Gemüse", "Tomate\nGurke", "Ok", "Ende");
case 2: ShowPlayerDialog(playerid, DIALOG_ITEMS_UNTER3, DIALOG_STYLE_LIST, "Baum", "Fichte\nBuche", "Ok", "Ende");
}
}
return 1;
}if(dialogid == DIALOG_ITEMS_UNTER1)
{
if(response)
{
switch(listitem)
{
case 0: ShowPlayerDialog(playerid, DIALOG_EXPLANATION, DIALOG_STYLE_MSGBOX, "Explanation", "Das ist ein ...", "Ok", "");
case 1: ShowPlayerDialog(playerid, DIALOG_EXPLANATION, DIALOG_STYLE_MSGBOX, "Explanation", "Das ist ein ...", "Ok", "");
case 2: ShowPlayerDialog(playerid, DIALOG_EXPLANATION, DIALOG_STYLE_MSGBOX, "Explanation", "Das ist ein ...", "Ok", "");
}
}
return 1;
}if(dialogid === DIALOG_ITEMS_UNTER2)
{
//...
} -
Schreibe es mal so:
forward Blitzer_Timer();
public Blitzer_Timer()
{
new save, strafe, speed;
//for (new playerid = 0; playerid < MAX_PLAYERS; playerid++)
for(new i = 0; i < MAX_PLAYERS; i++)
{
save = GetPVarInt(i, "BlitzPause");
if(save > 0)
{
save--;
SetPVarInt(i, "BlitzPause", save);
continue;
}
if(!IsPlayerInAnyVehicle(i) || IsPlayerNPC(i)) continue;
for(new b = 0; b < sizeof(Blitzer); b++)
{
if(Blitzer[b][Erstellt] == 1)
{
if(IsPlayerInRangeOfPoint(i, Blitzer[b][eRadius], Blitzer[b][BlitzerX], Blitzer[b][BlitzerY], Blitzer[b][BlitzerZ]))
{
new playerState = GetPlayerState(i);
if(playerState == PLAYER_STATE_PASSENGER)return 0;
speed = ErmittleGeschwindigkeit(i,true);
if(speed > Blitzer[b][Geschwindigkeit])
{
new string[128];
// Einstellen des Momentes, in dem der Spieler kein weiteres mal geblitzt werden kann
SetPVarInt(i, "BlitzPause", (BLITZER_TIMER_INTERVALL * BLITZER_PAUSE * 60) / 1000);
// Strafe für Spieler
strafe = (speed*2) - Blitzer[b][Geschwindigkeit];
PlayerPlaySound(i, 1132, 0.0, 0.0, 0.0);
GivePlayerMoney(i, -strafe);
// Text für Spieler
SendClientMessage(i, 0xFF6347AA,"Du wurdest wegen zu hoher Geschwindigkeit geblitzt!");
format(string,sizeof(string), "Du bist %d km/h gefahren und musst %d€ Bußgeld bezahlen.", speed, strafe);
SendClientMessage(i, 0xFF6347AA, string);
TextDrawShowForPlayer(i,BlitzerDraw[i]);
SetTimer("BlitzDelete",1000,false);
}
}
}
}
}
return 1;
}Außerdem musst du das Textdraw nicht für jeden Spieler erstellen, da du dessen String ja nicht änderst. Es reicht wenn du es einmal (ohne Array) bei OnGameModeInit erstellst.
-
Das hast du nicht gemacht:
format(fstring,100,"%i %i %i %i %i %i",FrakInfo[i][ffrak],FrakInfo[i][modelidd],FrakInfo[i][fx],FrakInfo[i][fy],FrakInfo[i][fz],FrakInfo[i][fr]);
zu:
format(fstring,100,"%i %i %0.2f %0.2f %0.2f %0.2f",FrakInfo[i][ffrak],FrakInfo[i][modelidd],FrakInfo[i][fx],FrakInfo[i][fy],FrakInfo[i][fz],FrakInfo[i][fr]);Wenn es dann auch nicht tut, füge gleich mal vor der sscanf Zeile das ein und poste was im Log steht wenn du die Fahrzeuge lädst:
printf("i:%d -> %s", i, fstring); -
Du musst die a_samp.inc (mindestens die!) in den /pawno/includes/ Ordner tun (alte ersetzen oder löschen).
Dann musst du /pawno/pawno.exe starten und deinen Code über das Öffnen-Symbol öffnen. Dann kompilieren.Nur dann ist die Funktion auch deklariert. Du verwendest noch alte Includes.
-
ocmd:createcode(playerid, params[])
{
new code[40], str[145];
format(code, sizeof(code), "%04d-%04d-%04d-%04d", random(10000), random(10000), random(10000), random(10000));
format(str, sizeof(str), "Gutscheincode : %s",code);
SendClientMessage(playerid,ROT,str);
format(code, sizeof(code), "/codes/%s.txt", code);
dini_Create(code);
dini_IntSet(code, "Geld", 1000);
return 1;
}Nicht vergessen den Ordner "codes" in den scriptfiles zu erstellen.
-
new code[20];
format(code, 20, "%04d-%04d-%04d-%04d", random(10000), random(10000), random(10000), random(10000)); -
Dass du nicht die 0 als Code bekommst.
new code[7];
format(code, 7, "%06d", random(999998)+1); -
Alle Includes die in dem Ordner sind, den du mit dem Link herunterladen kannst.