Am meisten kannst eh nur du was damit anfangen.
Ich hab mir auch meinen eigenen TextEditor geschrieben, trotz TextEdit und Notepad++, weil ich den einfach auf meine Dinge anpassen kann, so ist es mit jedem selbstgeschriebenen Programm.
Am meisten kannst eh nur du was damit anfangen.
Ich hab mir auch meinen eigenen TextEditor geschrieben, trotz TextEdit und Notepad++, weil ich den einfach auf meine Dinge anpassen kann, so ist es mit jedem selbstgeschriebenen Programm.
scheiß auf den besitzer, googel und guck bei youtube iwi bekommste den scheiß schon raus!
Tja, wenn er sich nen anderen Job suchen möchte, wäre das wohl ne gute Lösung, ja - da hast du natürlich recht.
Worum gehts dir genau?
Dass du nicht immer eine Zeile aka mysql_update(blalala, FraktionInfo[LSPD][fKasse]);
mysql_update(blalala, FraktionInfo[Medic][fKasse])
etc schreiben musst?
//edit:
wenn ja, du kannst enums mit schleifen durchlaufen, musst nur bei Arrays in einem enum beachten, dass die Länge des Arrays die gesammtgröße des enums ebenfalls vergrößert.
Bsp.
enum e_test { // weak
data1, // Index 0
data2, // Index 1
data3[5], // Index 2, 3, 4, 5, 6
data4 // index 7
}
sofern ich mich da gerade nicht vertue. (Bei den Array werten ^^), aber müsste so sein. dann kannst du die enum daten auch durchloopen.
Finds voll okay für die ersten Anfänge.
Wenn ich das von damals noch richtig im Kopf habe:
if(!strcmp("/mute",cmd,true) && GetPlayerLevel(playerid)>=LEVEL_MOD)
{
tmp=strtok(cmdtext,idx);
var=ReturnUser(tmp);
if(!IsPlayerConnected(var) || var==playerid || !cmdtext[idx])
return SendLanguageMessage(playerid,COLOR_RED,"Anwendung: /MUTE <ID/NAME> <ZEIT> <GRUND>","Usage: /MUTE <ID/NAME> <TIME> <REASON>");
tmp = strtok(cmdtext,idx);
int minutes = strval(tmp);
PlayerInfo[var][MUTED]=minutes*60;
SendLanguageMessageToAllEx(COLOR_CORAL,"[ADMCMD] %s (%d) hat %s (%d) verboten für %d Minuten zu reden! (Grund: %s)","[ADMCMD] %s (%d) has muted %s (%d) for %d minutes! (Reason: %s)",PlayerName[playerid],playerid,PlayerName[var],var, minutes, cmdtext[idx]);
AdminCommand(playerid,cmdtext);
return 1;
}
//scmtae
Wie playerid sagt, alle verbundenen Spieler bei OnGameModeExit abspeichern (for schleife - isPlayerConnected sollte dir hier helfen). Das ist dann auch für dein "gmx"
Hast du mal just 4 fun, dir in dem Command nur nen SendClientMessage ausgeben lassen? (Wenn du befürchtest, dass der Dialog zu lang ist)
Hast du vielleicht schon vorher ein endgültiges return auf gleicher Ebene? Sodass dieser Code quasi unreachable ist?
Dann lass dir mal bitte den CMD Text ausgeben.
Sicher, dass du die richtige AMX benutzt?
Lass dir mal unter OnPlayerCommandText cmdtext ausgeben.
if(!strcmp("/stat",cmdtext,true, 5))
{
new string[256];
format(string,sizeof string,"Name: %s\nLevel: %i\nNächster Payday: %i\nJob: %s\nFraktion: %s\nFraktionsrang: %s(%i)\n\nWantedlevel: %i\nMaterial-Kisten: %i",SpielerInfo[playerid][pName],SpielerInfo[playerid][pLevel],SpielerInfo[playerid][pPayday],Jobs[SpielerInfo[playerid][pJob]],Fraktname(playerid),Rankn[SpielerInfo[playerid][pFraktion]][SpielerInfo[playerid][pRang]],SpielerInfo[playerid][pRang],GetPlayerWantedLevel(playerid),SpielerInfo[playerid][pMaterialBox]);
ShowPlayerDialog(playerid,DIALOG_STATS,DIALOG_STYLE_MSGBOX,"Statistiken",string,"Weiter","Schließen");
return 1;
}
Naja ich würde es nicht direkt in die Datei abspeichern und auch nicht immer direkt auslesen lassen, sondern es temporär in einem Array speichern und dann beim Server Stop - speichern (von mir aus auch mal zwischendurch) und beim Server Start auslesen und wieder in das Array laden lassen.
enum lspd_weapons {
deagle,
mp5
}
new LSPDWeapons[lspd_weapons];
darin speicherst du z.B die Anzahl der Waffen temporär.
Wie man Sachen mit DINI abspeichert, siehst du z.B in diesem Tutorial: Easy Adminsystem --> Dini
@ MenInBlack95, weil es eine Zeichenkette speichern soll, also einen String.
so und ein ganzes Array kannst du nicht mit == vergleichen. Du musst an dieser Stelle strcmp benutzen: http://wiki.sa-mp.com/wiki/Strcmp
Ja 26 Errors waren immer ein Anzeichen dafür, dass ein Block ( { } ) nicht ordentlich geschlossen worden ist.
Am besten lässt du dir mal die Results für '{' und '}' ausgeben. Es sollten natürlich gleich viele Paare zu finden sein, wenn nicht, weißt du definitiv, dass irgendwo ein Block nicht ordentlich geschlossen worden ist.
Dafür müsste man mal den Code zum fehlerhaften Abspeichern sehen.
Das sind zwei Arrays, die je eine Zeichkette darstellen.
Bei einer MYSQL Abfrage könnte z.B folgendes Muster auftreten.
fraktionen wäre hier der Tabellenname,
Faktionsname wäre hier das Where[],
LSPD wäre hier das Is[],
dient einfach zur schnellen und (möglich!) eindeutigen Identifizierung.
Naja ich glaub ein Branch(inkl. SVN) ist da einfacher.
Aber danke, kann geclosed werden.
Hey,
ich brauch mal einen Ratschlag.
Und zwar möchte ich für verschiedene Kunden, verschiedene Versionen eine Anwendung implementieren.
Dabei wird der meiste Code aber in jeder Version benötigt. Also bringt es jetzt nichts eine Änderung in alle Versionen zu Copy pasten, sondern die Änderung soll dann zwischen den Versionen geshared werden.
Es soll aber auch die Möglichkeit Codeänderungen speziell für eine Version vorzunehmen, die dann nicht geshared wird.
Jemand einen Ratschlag, wie man sowas umsetzen kann? (Erstmal nur auf technischer Ebene ohne spezielle IDE, etc.)
Gruß
Danke für dein schnelles Handeln
Ahja und ich möchte hier in diesem Forum nichts mehr von "meinem" Projekt hören, danke.
Besonders nicht in diesem Werbethread
Erstell dir mal bitte eigene Forenregeln, danke.
Wenn du unsere Feature-Liste übernimmst, setz ne Quellenangabe rein.
usw... usw.. usw.
//edit: Ja und wenn du schon die Forenbeschreibungen übernimmst, setz deinen eigenen Projektnamen rein:
ZitatTeile uns deine Meinung zu thewarz.eu mit.
Kommt bei deinem Projekt nicht so gut...