Alles anzeigenHabe unter
OnGameModeInit
mysql_log();
reingepackt aber es erstellt sich kein Mysql log? möchte ja gerne nachvollziehen warum er nicht ordentlich speichert....
mysql_log(ALL);
Alles anzeigenHabe unter
OnGameModeInit
mysql_log();
reingepackt aber es erstellt sich kein Mysql log? möchte ja gerne nachvollziehen warum er nicht ordentlich speichert....
mysql_log(ALL);
Ist es möglich mit eine Dialog-Liste mit unbestimmten Elementen (listitem) zu erzeugen?
Bsp.:
Eine Datenbank mit einigen Datensätzen. Diese sollen in der Dialog-Liste angezeigt werden und auch auswählbar sein, sodass auch was passiert wenn diese ausgewählt werden.
Nun ist diese Liste nicht konstant, sondern ändert sich ständig (Löschen von Datensätzen bzw. Erstellen). Das Problem ist nun switch(listitem) (was ich benutze).
Wie drückt man das aus in OnDialoResponse, da ich keine feste Anzahl an Fällen (case) habe?
Mein Ansatz wären die Anzahl der Zeilen (rows), weitre komm ich gerade nicht.
TL;DR: Hauptproblem: Auswählen von einer unbestimmten Anzahl an Listen-Elementen .
Ist es möglich für einen bestimmten Spieler ein Object zu bewegen habe da nichts gefunden,
z.B das man es so macht wenn die "Gefängnis Zeit" abgelaufen ist sich das Tor für diesen Spieler öffnet.
Halt so was wie
MoveObjectForPlayer
Ist es möglich für einen bestimmten Spieler ein Object zu bewegen habe da nichts gefunden,
z.B das man es so macht wenn die "Gefängnis Zeit" abgelaufen ist sich das Tor für diesen Spieler öffnet.
Halt so was wie
MoveObjectForPlayer
Wie kann man da nichts gefunden haben?
[wiki]MovePlayerObject[/wiki]
Dafür musst du allerdings für jeden spieler dieses Tor einzeln erstellen erstellen mit [wiki]CreatePlayerObject[/wiki].
Was genau werden denn für Aktionen ausgeführt, wenn man welchen Datensatz auswählt?
Sind die immer unterschiedlich oder für bestimmte Gruppen gleich?
Hey, und zwar habe ich nun bei PAWNO, auf new gedrückt und erstelle theoretisch ein neues Script.
Aber jetzt kommen schon die ersten Probleme.
if(strcmp(cmdtext, "/skin", true) == 0)
{
SetPlayerSkin(playerid, 202);
SendClientMessage(playerid,0x9ACD32AA,"Dein Skin wurde dir gesetzt.");
return 1;
}
Ich kriege einfach die Antwort: "SERVER: Unkown Command"
Ich kriege einfach die Antwort: "SERVER: Unkown Command"
returnst du das Callback OnPlayerCommandText mit 0 oder 1? Wenn 1, dann ändere es zu return 0;. [wiki]OnPlayerCommandText[/wiki] hier kannst du auch weiterlesen.
returnst du das Callback OnPlayerCommandText mit 0 oder 1? Wenn 1, dann ändere es zu return 0;. [wiki]OnPlayerCommandText[/wiki] hier kannst du auch weiterlesen.
public OnPlayerCommandText(playerid, cmdtext[])
{
if(strcmp(cmdtext, "/skin", true) == 0)
{
SetPlayerSkin(playerid, 202);
SendClientMessage(playerid,0x9ACD32AA,"Dein Skin wurde dir gesetzt.");
return 1;
}
return 0;
}
Es ist ein IP-Bann System (Ist ein mix aus MySQL (Speicherung der gesperrten IPs) und /rcon banip bzw. unbanip )
Beim Problem geht es hier nur um das Entbannen:
Wenn die IP in der Liste ausgewählt wird soll diese auch entsperrt werden
Es werden dem Admin (Bsp.: Head-Admin) nur die IPs angezeigt die er auch selber gesperrt hat.
Nur der ranghöchste Admin (Bsp.: Projektleiter) kann alle gesperrten IPs sehen.
Deshalb ist die Länge der Liste bei jedem Spieler anders weshalb listitem immer verschieden groß ist.
Ich gehe davon aus, dass du ein Array mit den IP's und der ID (o.ä.) des Admins hast?
Du baust dir dein Dialog über eine Schleife diesen Array auf (hast du denke ich auch mal schon erledigt).
Mit der gleichen Schleife, nur eben ohne der Zusammensetzung des Dialogs, kannst du dann mit einem Counter abfragen, welches IP angeklickt wurde.
Hier ein Beispiel:
enum ip_list_enum {
userip[24],
adminid
};
new ipList[][ip_list_enum] = { // Oder eben aus deiner DB auslesen
{"127.0.0.1", 1},
{"127.0.0.2", 3},
{"127.0.0.3", 6},
{"127.0.0.4", 4},
{"127.0.0.5", 1},
{"127.0.0.6", 1}
};
stock showDialog(playerid) {
new string[128];
for(new i; i < sizeof ipList; i++) {
if(ipList[i][adminid] != getPlayerAdminID(playerid)) continue; // Nur eigene Bans anzeigen
format(string, sizeof string, "%s\n", ipList[i][userip]);
}
return ShowPlayerDialog(playerid, diaIPList, DIALOG_STYLE_LIST, "IP Bans", string, "Bestätigen", "Schließen");
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == diaIPList) {
if(!response) return 0;
new counter, index = -1;
for(new i; i < sizeof ipList; i++) {
if(ipList[i][adminid] != getPlayerAdminID(playerid)) continue; // Nur eigene Bans anzeigen
if(listitem == counter) {
index = i;
break;
}
counter++;
}
if(index != -1) {
// Aktion ausführen mit:
// ipList[index][userip]
// ipList[index][adminid]
}
}
return 1;
}
Alles anzeigen
Ist schnell abgetippt. Sollte so aussehen.
public OnPlayerCommandText(playerid, cmdtext[]){if(strcmp(cmdtext, "/skin", true) == 0){SetPlayerSkin(playerid, 202);SendClientMessage(playerid,0x9ACD32AA,"Dein Skin wurde dir gesetzt.");return 1;}return 0;}
@Jeffry du Profi ![]()
Kannst du mir eventuell helfen?
Du kannst dein Problem auch einfach hier schreiben, dann helfen dir fast 100 Leute.
Du kannst dein Problem auch einfach hier schreiben, dann helfen dir fast 100 Leute.
hab ich doch. xd
Kannst du mir eventuell helfen?
Sieht so aus, als wird das OnPlayerCommandText Callback gar nicht aufgerufen. Ist der Code geladen? Wenn ja, nutzt du einen Command Prozessor wie z.B. ocmd, zcmd, dcmd, etc...?
Habe ein Problem:
wie baue ich das mit else if rein? Folgender ERROR kommt: error 001: expected token: "*then", but found ";"
if (strcmp("/loadbenzin", cmdtext, true, 10) == 0)
{
if (IsPlayerInRangeOfPoint(playerid, 7.0, 260.0804,1371.4133,10.4647))
{
ShowPlayerDialog(playerid, DIALOG_LOADBENZIN, DIALOG_STYLE_LIST, "Loadbenzin", "1000 Liter\n5000 Liter\n8000 Liter", "Einladen", "Abbrechen");
return 1;
}
else if
SendClientMessage(playerid,0xAA3333AA,"Du bist nicht in der Nähe!");
}
return 0;
}
wie baue ich das mit else if rein? Folgender ERROR kommt: error 001: expected token: "*then", but found ";"
if(strcmp("/loadbenzin", cmdtext, true) == 0)
{
if(IsPlayerInRangeOfPoint(playerid, 7.0, 260.0804,1371.4133,10.4647))
{
ShowPlayerDialog(playerid, DIALOG_LOADBENZIN, DIALOG_STYLE_LIST, "Loadbenzin", "1000 Liter\n5000 Liter\n8000 Liter", "Einladen", "Abbrechen");
}
else
{
SendClientMessage(playerid,0xAA3333AA,"Du bist nicht in der Nähe!");
}
return 1;
}
Jetzt wollte ich noch fragen wie ich ein Zufall rein baue.
Man schreibt halt /loadbenzin und soll dann entweder Marker1,Marker2 oder Marker 3 kriegen.(soll gesetzt werden)
switch(random(3))
{
case 0:
{
//Marker 1
}
case 1:
{
//Marker 2
}
case 2:
{
//Marker 3
}
}