Das PLugin läd jetzt aber Ingame passiert immer noch nichts...
Kannst du bitte den Code posten, der nicht ausgeführt wird, und den MySQL Log, der erzeugt wird?
Das PLugin läd jetzt aber Ingame passiert immer noch nichts...
Kannst du bitte den Code posten, der nicht ausgeführt wird, und den MySQL Log, der erzeugt wird?
Wenn du das mehrmals ausführen lässt, dann erklärt sich der Fehler, da die Spalten ja bereits existieren.
Schreibe die Erstellung der Tabelle am besten etwas um, und zwar so:
strcat(query,"CREATE TABLE IF NOT EXISTS `"#SQLTAG"_account_main` (");
strcat(query,"`id` int(11) NOT NULL AUTO_INCREMENT,");
strcat(query,"`Name` varchar(24) NOT NULL,");
strcat(query,"`Online` int(2) NOT NULL,");
strcat(query,"`Email` varchar(128) NOT NULL,");
/*
...
*/
strcat(query,"`HohlenforscherSkill` int(10) NOT NULL,");
strcat(query,"PRIMARY KEY (`id`))");
Dann sparst du dir das ALTER TABLE und es sieht wesentlich übersichtlicher aus.
Was meinst du mit "habe den Code"?
Ich hab jetzt genau das selbe Problem
Installiere dir dieses All in One Paket:
http://www.chip.de/downloads/A…ne-Runtimes_37449838.html
Gibt dir der MySQL Log einen Fehler aus? Wenn ja, poste diesen bitte mal.
Versuche es so:
printf("Team playerid: %d / paintball: %d", Spieler[playerid][Team], Spieler[playerid][Paintball]);
if(Spieler[playerid][Team] == 8 || Spieler[playerid][Team] == 9 || Spieler[playerid][Team] == 10 || Spieler[playerid][Team] == 11 || Spieler[playerid][Team] == 12 || Spieler[playerid][Team] == 16 || Spieler[playerid][Team] == 17 || Spieler[playerid][Team] == 18 || Spieler[playerid][Team] == 19 || Spieler[playerid][Team] == 20)//Abfrage ob "playerid" (der wo gekillt wurde) in einer Gang ist muss hier hin
{
SendClientMessage(killerid,0xFFFFFF00,"Du hast einen Gang Member gekillt (+2 Wanteds)");
SetPlayerWantedLevel(killerid, GetPlayerWantedLevel(killerid)+2);
}
else if(Spieler[playerid][Team] == 1 || Spieler[playerid][Team] == 2 || Spieler[playerid][Team] == 14 || Spieler[playerid][Team] == 15)
{
SendClientMessage(killerid,0xFFFFFF00,"Du hast einen Verbrecher gekillt");
}
else if(Spieler[playerid][Team] == 0)
{
if(Spieler[playerid][Paintball] == 0)
{
SendClientMessage(killerid,0xFFFFFF00,"Du hast einen Zivi gekillt (+1 Wanted)");
SetPlayerWantedLevel(killerid, GetPlayerWantedLevel(killerid)+1);
Spieler[playerid][Wanteds] += 1;
printf("Zivi getötet.");
}
}
else if(Spieler[playerid][Wanteds] < 1)
{
GetPlayerPos(playerid, Spieler[playerid][dx], Spieler[playerid][dy], Spieler[playerid][dz]);
}
Falls es nicht klappt, poste bitte was im Server Log steht.
#define dialog_jailcashfuercops 9
#define dialog_jailcashrobber 9
Zwei Dialoge dürfen nicht die gleiche Zahl haben. Ändere eine ab, dann klappt es.
Zwecks dem Motor:
Dort wo der Befehl ausgeführt werden soll:
ocmd_motor(playerid, "");
Wieso wird mein print nicht aufgerufen ( der 2 Print ) ?
for(new i = 0; i < sizeof(FCarKeys); i++)
zu:
for(new i = 0; i < sizeof(FCarKeys[]); i++)
Damit er das zweite Array nimmt, und nicht dessen Größe, wo "veh" drin steht.
http://forum.sa-mp.com/showthread.php?t=253436
http://forum.sa-mp.com/showthread.php?t=295798
Mehr kann ich dir dazu nicht sagen, da ich mich damit nicht auskenne.
Wie sind dialog_geldverwaltung, dialog_jailcashfuercops und dialogid==dialog_jailcashrobber definiert?
Versuche es eventuell mal so:
//Und zu guter letzt die dialoge
if(dialogid==dialog_geldverwaltung)
{
if(!response) return 1;
if(listitem==0)//Jailcash für Cops
{
ShowPlayerDialog(playerid,dialog_jailcashfuercops,DIALOG_STYLE_INPUT,"Gelvergabe-Ändern","In welchen Wert willst du diese Geldvergabe ändern?","Ändern","Abbrechen");
}
else if(listitem==1)//Jailcash- für Robber
{
ShowPlayerDialog(playerid,dialog_jailcashrobber,DIALOG_STYLE_INPUT,"Gelvergabe-Ändern","In welchen Wert willst du diese Geldvergabe ändern?","Ändern","Abbrechen");
}
return 1;
}
if(dialogid==dialog_jailcashfuercops)
{
if(!response) return 1;
if(!IsNumeric(inputtext)) return SendClientMessage(playerid,COLOR_GRAD2,"** Dieser Wert darf keine Buchstaben enthalten!");
Geld[Jailcashcop] = strval(inputtext);
format(string,sizeof(string),"* Du hast diese Geldvergabe erfolgreich in $%d geändert.",strval(inputtext));
SendClientMessage(playerid,COLOR_GREEN,string);
return 1;
}
if(dialogid==dialog_jailcashrobber)
{
if(!response) return 1;
if(!IsNumeric(inputtext)) return SendClientMessage(playerid,COLOR_GRAD2,"** Dieser Wert darf keine Buchstaben enthalten!");
Geld[Jailcashrobber] = strval(inputtext);
format(string,sizeof(string),"* Du hast diese Geldvergabe erfolgreich in $%d geändert.",strval(inputtext));
SendClientMessage(playerid,COLOR_GREEN,string);
return 1;
}
Ich habe ein sehr langen /motor Befehl und möchte ihn auf die Taste "N" setzen zb.
Wie sieht denn der Befehl aus?
Kannst du mir zeigen wie ich es machen muss
for(new i = 0; i < sizeof(FCarKeys); i++)
{
for(new j = 0; j < sizeof(FCarKeys[]); j++)
{
FCarKeys[i][j] = -1;
}
}
Setzt du auch alle FCarKeys auf -1 zum Start des Servers bei OnGameModeInit?
Wenn nicht, mache das, sonst ist der Wert 0, was wahrscheinlich deine playerid ist.
new fID = GetPlayerFrakID(playerid), count = -1;
for(new i=0; i<MAX_FRAC_VEHICLES; i++)
{
if(fracVehicle[i][e_fracID] != fID) continue;
count++;
if(count == listitem)
{
//Das Fahrzeug mit dem Index "i" wurde angeklickt.
break;
}
}
switch(strval(inputtext))
{
case 265..267,280..284,288,300..302,306..311:
{
//...
}
}
SetPlayerWantedLevel(pID,Wanteds);
zu:
SetPlayerWantedLevel(pID,GetPlayerWantedLevel(pID) + Wanteds);
ocmd:enter(playerid, params[])
{
for(new i = 0; i < sizeof(iPickupSys); i++)
{
if(IsPlayerInRangeOfPoint(playerid, enterDistanz, iPickupSys[i][pickX], iPickupSys[i][pickY], iPickupSys[i][pickZ]))
{
SendClientMessage(playerid, -1, "Interior betreten.");
SetPlayerPos(playerid, iPickupSys[i][esX], iPickupSys[i][esY], iPickupSys[i][esZ]);
SetPlayerInterior(playerid, iPickupSys[i][pinteriorid]);
SetPlayerVirtualWorld(playerid, iPickupSys[i][entervworld]);
return 1;
}
}
return 1;
}
Unter den Includes:
bool:AFK[MAX_PLAYERS], lastUpdate[MAX_PLAYERS];
Unter OnGameModeInit:
SetTimer("AFKCheck", 1000, true);
Unter OnPlayerUpdate:
lastUpdate[playerid] = GetTickCount();
if(AFK[playerid])
{
AFK[playerid] = false;
}
Unten im Gamemode:
forward AFKCheck();
public AFKCheck()
{
new tick = GetTickCount() - 1000;
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i) && !IsPlayerNPC(i) && !AFK[i])
{
if(lastUpdate[i] < tick)
{
AFK[i] = true;
}
}
}
return 1;
}
Wenn OnPlayerUpdate eine Sekunde lang nicht aufgerufen wurde, dann ist der Spieler AFK (Menü / Desktop).
Was sind die Bedingungen dafür, dass man AFK ist? (Keine Bewegung, im Menü, an einem bestimmten Ort, ...)
Kommt drauf an was das System machen soll (Bedingungen für AFK).
Das ist durch die for-Schleife schon erledigt.