Danke [NeS]shoXy!
Es hat geklappt.
Die iPAA funktion hab ich mit absicht so geschrieben, da sie für mich so am ebsten passt.
MfG
Danke [NeS]shoXy!
Es hat geklappt.
Die iPAA funktion hab ich mit absicht so geschrieben, da sie für mich so am ebsten passt.
MfG
Kleine Frage ![]()
ich möchte gerne ein Fahrzeug zulassen, würde das so funktionieren, also das genau das Fahrzeug was ich ausgewählt habe im Dialog die P_KZ ID kriegt und wie update ich das Kennzeichen vom Fahrzeug?
Ich habe nicht einmal listitem benutzt deswegen wundert mich ob es so funktionieren kann.
Dialog wo alle Fahrzeuge angezeigt werden -> Ich wähle mein Fahrzeug aus -> das passiert
Auto ausgewählt was zugelassen werden soll">PAWN-Quellcode: -> Auto ausgewählt was zugelassen werden sollQuellcode bearbeiten
[*] if(dialogid == DIALOG_ZULASSUNG2)
[*] {
[*] if(response)
[*] {
[*] if(PCar[playerid][listitem][P_MID] < 400) //wenn leer ausgewählt
[*] {
[*]
[*] }
[*] else
[*] {
[*] SetPVarInt(playerid,"_tmp_veh",d);
[*] StartGenerateUniqueRandomNumber(playerid, handle, NUMBER_PLATE_POOL, 2);
[*] }
[*] }
[*] else
[*] {
[*] //Zurück
[*] }
[*] return 1;
[*] }
[/list]
Ist es möglich z.B der aktuelle Stand von Bitcoin auszulesen und im Script einzubauen?
Ist es möglich z.B der aktuelle Stand von Bitcoin auszulesen und im Script einzubauen?
Verlass dich nicht 100%ig auf meine Aussage, aber ich glaube das wäre beispielsweise in Combi mit der Website möglich. Also Website holt die Infos und übers Script liest dus aus. So könnte ich es mir zumindest vorstellen. Ähnliche Frage würde sich mir stellen, wie ich ein YT Video/Lied IG suchen & abspielen lassen könnte? Würde dort ähnlich verfahren.
Verlass dich nicht 100%ig auf meine Aussage, aber ich glaube das wäre beispielsweise in Combi mit der Website möglich. Also Website holt die Infos und übers Script liest dus aus. So könnte ich es mir zumindest vorstellen. Ähnliche Frage würde sich mir stellen, wie ich ein YT Video/Lied IG suchen & abspielen lassen könnte? Würde dort ähnlich verfahren.
und wie kann ich das auslesen?
Wenn du ne passende API könntest du einen HTTPRequest ausführen und so an den Kurs kommen. ![]()
Ist es möglich z.B der aktuelle Stand von Bitcoin auszulesen und im Script einzubauen?
Ja, das ist sehr gut möglich.
Es gibt schon eine API die dir das zur Verfügung stellt: https://api.coinmarketcap.com/v1/ticker/bitcoin/?convert=EUR
Und mit der Funktion: https://wiki.sa-mp.com/wiki/HTTP kannst du das einfach abfragen und angeben ![]()
Am Ende wuerde ich gerne in einem Dialog alle Spieler auflisten, sortiert absteigend nach den meisten Kills.
Schreib das mal so:
new scoreTable[MAX_PLAYERS][2], idx;
for(new i = GetPlayerPoolSize(); i!=-1; i--)
{
if(!IsPlayerConnected(i) || IsPlayerNPC(i)) continue;
scoreTable[i][0] = playerdataInfo[i][pKills];
scoreTable[i][1] = i;
}
SortDeepArray(scoreTable, 0, .order = SORT_DESC); //Sortiert nach Kills
//Platz 1 - Meisten Kills
idx = scoreTable[0][1];
playerdataInfo[idx][pKills] //Platz 1 Kills
playerdataInfo[idx][pDeaths] //Platz 1 Deaths
playerdataInfo[idx][pBeds] //Platz 1 Betten
//Dann einfach Platz 2
idx = scoreTable[1][1];
playerdataInfo[idx][pKills] //Platz 2 Kills
playerdataInfo[idx][pDeaths] //Platz 2 Deaths
playerdataInfo[idx][pBeds] //Platz 2 Betten
//Dann einfach Platz 3
idx = scoreTable[2][1];
playerdataInfo[idx][pKills] //Platz 3 Kills
playerdataInfo[idx][pDeaths] //Platz 3 Deaths
playerdataInfo[idx][pBeds] //Platz 3 Betten
Alles anzeigen
Nutze dafür: https://forum.sa-mp.com/showthread.php?t=343172
Kleine Frage
Das keine kleine Frage, weil das komplett unverständlich ist, was du eigentlich wissen magst.
Und so gut wie keiner kennt doch die Funktionen etc was du da verwendest.
Schreib mir eine PN wenn du doch offensichtlich zu dem Callback Mechanismus von mir fragen hast ![]()
Danke dir Kaliber!
Kennt jemand sich mit diesem Fehler unter Linux aus?
Failed (libmysqlclient.so.18: cannot open shared object file: No such file or directory)
Das kommt wenn ich einen Server mit dem mysql Plugin starten will.
Leider finde ich auch nicht das Paket welches diese Datei beinhaltet.
Leider finde ich auch nicht das Paket welches diese Datei beinhaltet.
Das kommt auf deine Distribution an.
Unter Debian/Ubuntu müsste das libmysqlclient-dev sein und unter CentOS mysql-libs
Hi hab folgendes Problem: Nachdem der Countdown zuende ist, geht es weiter (-1,-2,-3 etc.)
new CountDownFromAmount;
CountDownFromAmount = 10; SetTimer("CountDownTimer2", 999, 1);
forward CountDownTimer2();public CountDownTimer2(){ CountDownFromAmount--; new string[128]; format(string, 128, "~w~%d Sekunden", CountDownFromAmount); GameTextForAll(string, 990, 4); if (CountDownFromAmount == 0) { GameTextForAll("Mach dich bereit!", 3000, 5); return 1; } return 1;}
Der countdown soll übrigens nach 10 sekunden zuende sein (von 10-0)
Empfehle dir folgendes:
1. Lösche CountDownFromAmount.
2. Schreib es so:
SetTimerEx("CountDownTimer2", 997, 0, "i", 10); //10 = Sekunden
forward CountDownTimer2(countDown);
public CountDownTimer2(countDown)
{
if (--countDown == 0) return GameTextForAll("Mach dich bereit!", 3000, 5);
new string[32];
format(string, sizeof(string), "~w~%d Sekunden", countDown);
GameTextForAll(string, 990, 4);
SetTimerEx("CountDownTimer2", 997, 0, "i", countDown);
return 1;
}
Dann brauchst du keine Globale Variable und der Timer beendet sich automatisch ![]()
Irgendeine idee?
Schreibs mal so:
{
new org = PlayerInfo[playerid][pOrgMember];
printf("%d != 0 && %d == 1",org,OrgInfo[org][OrgMech]);
return (org != 0 && OrgInfo[org][OrgMech] == 1);
}
Dann schau mal, was geprintet wird im Server-Log und dann weißt du, was falsch läuft ![]()
PS: Funktionsname entfernt weil angeblich das ein zensiertes Wort ist *roflkopter*
Jap genau das gleich hatte ich auch ;D
//
In der Log steht [18:50:14] 0 != 0 && 0 == 1
wtf
Bei nem anderen Spieler steht das drinne
[18:52:29] 10 != 0 && 49 == 1
In der Log steht [18:50:14] 0 != 0 && 0 == 1
Dann weißt du, dass er offensichtlich pOrgMember von nix ist, da das 0 ist.
Ist er eventuell pOrgLeader? Kann es sein, dass du da 2 Variablen hast? ![]()
Moin.
Ich will bei mir ein Rundensystem einfuegen. In meinem Gamemode gibt es 3 Teams, und wenn in mindestens 2 Teams mindestens 1 Spieler ist, soll ein Countdown starten.
Wenn zwischendurch Spieler rausgehen soll dieser wieder resettet werden.
Wenn der Countdown von 60 auf 0 runtergezaehlt hat sollen die Spieler gespawnt werden, und die Runde soll gestartet werden.
Ist das hier logisch umgesetzt? Und wann rufe ich am besten die Funktion StartGame() auf? Oder periodisch mit Timer?
stock StartGame()
{
if(GetActiveTeamCount() > 1)
{
CountDownVar--;
new str[128];
if(CountDownVar == 0)
{
KillTimer(CountDownTimer2);
CountDownVar = 59;
GameHasStarted =1;
GameTextForAll("Start!",1000,1);
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(gPlayerHasTeamSelected(i))
{
TeleportPlayerToBase(i);
TogglePlayerControllable(i,1);
ResetPlayerData(i);
}
}
}
else
{
format(str, sizeof(str), "Count Down: %d", CountDownTimer2);
GameTextForAll(str, 1000, 1);
}
return 1;
}
else
{
CountDownVar = 59;
}
}
Alles anzeigen
Hier die Funktion welche erkennt wenn eine Runde beendet ist.
Der rekursive Aufruf hier sinvoll?
stock TeamsAlive(bool:value)
{
new i=0,count=0;
while(i<TEAMSIZE)
{
if(GetTeamPlayerCount(i) > 0)
{
count++;
}
i++;
}
if(bool:value == false)
switch(count)
{
case 1:
{
switch(TeamsAlive(true))
{
case FIRST_TEAM:
{
for(new d;d<MAX_PLAYERS;d++)
{
SendClientMessageEx(d,COLOR_WHITE,"SERVER: All remaining teams have been wiped. Team %s {FFFFFF}has won the game!",FIRST_TEAM_COLOR_TAG);
}
}
case SECOND_TEAM:
{
for(new d;d<MAX_PLAYERS;d++)
{
SendClientMessageEx(d,COLOR_WHITE,"SERVER: All remaining teams have been wiped. Team %s {FFFFFF}has won the game!",SECOND_TEAM_COLOR_TAG);
}
}
#if defined TEAMSIZE
#if TEAMSIZE >= 3
case THIRD_TEAM:
{
for(new d;d<MAX_PLAYERS;d++)
{
SendClientMessageEx(d,COLOR_WHITE,"SERVER: All remaining teams have been wiped. Team %s {FFFFFF}has won the game!",THIRD_TEAM_COLOR_TAG);
}
}
#endif
#endif
#if defined TEAMSIZE
#if TEAMSIZE >= 4
case FOURTH_TEAM:
{
for(new d;d<MAX_PLAYERS;d++)
{
SendClientMessageEx(d,COLOR_WHITE,"SERVER: All remaining teams have been wiped. Team %s {FFFFFF}has won the game!",FOURTH_TEAM_COLOR_TAG);
}
}
#endif
#endif
#if defined TEAMSIZE
#if TEAMSIZE >= 5
case FIFTH_TEAM:
{
for(new d;d<MAX_PLAYERS;d++)
{
SendClientMessageEx(d,COLOR_WHITE,"SERVER: All remaining teams have been wiped. Team %s {FFFFFF}has won the game!",FIFTH_TEAM_COLOR_TAG);
}
}
#endif
#endif
#if defined TEAMSIZE
#if TEAMSIZE == 6
case SIXTH_TEAM:
{
for(new d;d<MAX_PLAYERS;d++)
{
SendClientMessageEx(d,COLOR_WHITE,"SERVER: All remaining teams have been wiped. Team %s {FFFFFF}has won the game!",SIXTH_TEAM_COLOR_TAG);
}
}
#endif
#endif
}
for(new o;o<MAX_PLAYERS;o++)
{
ResetPlayerData(o);
}
FinishedGame();
}
}
if(bool:value == true && count == 1)//Returns the ID of the remaining team
return i;
return 1;
}
Alles anzeigen
Hallo!
Ich möchte einen /admins Befehl machen.
Wie bekomme ich es hin, das mir angezeigt wird ob der Spieler Online, Offline oder AFK ist?
ocmd:admins(playerid,params[])
{
if(IsPlayerConnected(playerid))
{
ShowPlayerDialog(playerid, 8, DIALOG_STYLE_TABLIST_HEADERS, "ARP Team",
"Rang\tName\tOnlinestatus\tTickets\n\
{FF0000}Projektleiter\tAllrounder18\t{40FF00}Online\tkA\n\
{00a4b3}Manager\tKolho\t{40FF00}Online\tkA\n\
{00a4b3}Manager\tFlo20\t{40FF00}Online\tkA\n",
"Zurück", "");
}
else
{
ShowPlayerDialog(playerid, 8, DIALOG_STYLE_TABLIST_HEADERS, "ARP Team",
"Rang\tName\tOnlinestatus\tTickets\n\
{FF0000}Projektleiter\tAllrounder18\t{FF0000}Offline\tkA\n\
{00a4b3}Manager\tKolho\t{FF0000}Offline\tkA\n\
{00a4b3}Manager\tFlo20\t{FF0000}Offline\tkA\n",
"Zurück", "");
}
return 1;
}
Kann ich diesen Befehl irgendwie auch kürzer schreiben, bzw. kann ich es irgendwie machen das ich ingame Mitglieder in die Liste einfügen kann?
MfG
Wie bekomme ich es hin, das mir angezeigt wird ob der Spieler Online, Offline oder AFK ist?
Mit welcher Variable prüfst du denn, ob jemand AFK ist? ![]()
Moin.
Wenn man über 100 Zeilen Code + Logik Fragen hat...daaann ist das keine kleine Scripting Frage mehr ![]()
Eröffne da mal lieber einen eigenen Thread xD