Beitrag von MGPK-1323 ()
Dieser Beitrag wurde vom Autor gelöscht ().
Es kommt aus irgendeinem Grund immer SERVER: Unknown Command
ocmd:veh(playerid,params[])
{
if(!isAdmin(playerid, 3))return SendClientMessage(playerid,DUNKELROT,"Dein Adminlevel ist zu Niedrig!");
new mID, pID;
if(sscanf(params,"ui",pID,mID))return SendClientMessage(playerid,DUNKELROT,"[INFO] /veh [playerid] [modelid]");
if(mID<=400 ||mID>611)return SendClientMessage(playerid,DUNKELROT,"Ungültige Model ID!");
new Float:xc,Float:yc,Float:zc,Float:rc;
GetPlayerPos(playerid,xc,yc,zc);
GetPlayerFacingAngle(playerid,rc);
createPlayerCar(pID,mID,xc,yc,zc,rc);
return 1;
}
Aber wenn ich z.B /veh [SPIELERID] [FahrzeugID] eingebe kommt Ungültige Model ID!
aber anders rum SERVER: Unknown Command
Dann liegt das an der Funktion createPlayerCar.
Crashdetect würde dir auch den Fehler im Log anzeigen ![]()
Aber wenn ich z.B /veh [SPIELERID] [FahrzeugID] eingebe kommt Ungültige Model ID!
Nutzt du das sscanf Plugin oder nur die Funktion im Code?
Und was genau gibst du ein? Liegt die ModelID (!) zwischen 400 und 611?
Versuche es eventuell mal testweise so:
if(sscanf(params,"ii",pID,mID))return SendClientMessage(playerid,DUNKELROT,"[INFO] /veh [playerid] [modelid]");
Falls das nicht hilft, poste bitte die createPlayerCar Funktion.
@Jeffry mit dem if(sscanf(params,"ii",pID,mID))return SendClientMessage(playerid,DUNKELROT,"[INFO] /veh [playerid] [modelid]");
hat es funktioniert danke dir
/edit habe ein weiteres Problem:
Ingame sieht es so aus:
http://prntscr.com/gongh5
und so sieht meine Datenbank aus:
http://prntscr.com/gonh6x
so sieht mein pDataEnum aus:
enum pDataEnum
{
p_id,
bool:pLoggedIn,
pName[MAX_PLAYER_NAME],
pLevel,
pMoney,
pKills,
pDeaths,
pAlevel,
pFraktion,
pRank,
pPerso,
pSpawnchange,
pPayday,
pXP,
pXPMax,
pCarlic,
pBikelic,
pFlylic,
pWaffenlic,
pBoatlic,
pDrugs,
pStartbonus,
pMats,
pMatpacks,
pBusfahrer,
pLandwirt,
pStrassenfeger,
pDrogendealer,
pHure,
pWaffendealer
}
und so sieht mein gesamter /set code aus:
ocmd:set(playerid,params[])
{
if(!isAdmin(playerid, 3))return SendClientMessage(playerid,DUNKELROT,"Dein Adminlevel ist zu Niedrig!");
new pID,string[128],cmd[30],menge;
if(sscanf(params,"usi",pID,cmd,menge))
{
SendClientMessage(playerid,GELB,"[INFO]: /set [playerid/Name][Aktion] [Menge/Betrag]");
return SendClientMessage(playerid,GRAU,"[Bank/Level/Skin/Geld/Respektpunkte/Drogen/Mats]");
}
if(strcmp(cmd,"Level",true) == 0)
{
if(!isAdmin(playerid, 3))return SendClientMessage(playerid,DUNKELROT,"Dein Adminlevel ist zu Niedrig!");
if(menge<1||menge>100)return SendClientMessage(playerid,GELB,"/set Level [playerid/Name][Level 1-100]");
format(string,sizeof(string),"AdmCmd: Der Admin %s (ID:%i) hat dein Level auf %i gesetzt.",SpielerName(playerid),playerid,menge);
SendClientMessage(pID,HELLBLAU,string);
format(string,sizeof(string),"AdmCmd: Du hast dem Spieler %s (ID:%i) das Level auf %i gesetzt.",SpielerName(pID),pID,menge);
SendClientMessage(playerid,HELLBLAU,string);
SetPlayerLevel(pID,menge);
SaveUserStats(pID);
}
if(strcmp(cmd,"Skin",true) == 0)
{
if(menge<1||menge>311)return SendClientMessage(playerid,GELB,"/set Skin [playerid/Name][1-311]");
SetPlayerSkin(pID,menge);
format(string,sizeof(string),"AdmCmd: Der Admin %s (ID: %i) hat dir den Skin %i zugewiesen.",SpielerName(playerid),playerid,menge);
SendClientMessage(pID,HELLBLAU,string);
format(string,sizeof(string),"AdmCmd: Du hast dem Spieler %s (ID:%i) den Skin %i zugewiesen.",SpielerName(pID),pID,menge);
SendClientMessage(playerid,HELLBLAU,string);
SaveUserStats(pID);
}
if(strcmp(cmd,"Geld",true) == 0)
{
if(menge<1||90000000)return SendClientMessage(playerid,GELB,"/set Geld [playerid/Name][1-90000000]");
ResetPlayerMoney(pID);
GivePlayerMoney(pID, menge);
PlayerInfo[pID][pMoney] = menge;
format(string, sizeof(string), "AdmCmd: %s hat dein Geld auf $%i gesetzt.", SpielerName(playerid), menge);
SendClientMessage(pID, HELLBLAU, string);
format(string, sizeof(string), "AdmCmd: Du hast %s den Geldbetrag auf $%i gesetzt.", SpielerName(pID), menge);
SendClientMessage(playerid, HELLBLAU, string);
SaveUserStats(pID);
}
if(strcmp(cmd,"Drogen",true) == 0)
{
PlayerInfo[pID][pDrugs] += menge;
format(string,sizeof(string),"AdmCmd: Der Admin %s (ID:%i) hat dir deine Drogen auf %i gesetzt.",SpielerName(playerid),playerid,menge);
SendClientMessage(pID,HELLBLAU,string);
format(string,sizeof(string),"AdmCmd: Du hast dem Spieler %s (ID:%i) die Drogen auf %i gesetzt.",SpielerName(pID),pID,menge);
SendClientMessage(playerid,HELLBLAU,string);
SaveUserStats(pID);
}
if(strcmp(cmd,"Mats",true) == 0)
{
PlayerInfo[pID][pMats] = menge;
format(string,sizeof(string),"AdmCmd: Der Admin %s (ID:%i) hat dir deine Mats auf %i gesetzt.",SpielerName(playerid),playerid,menge);
SendClientMessage(pID,HELLBLAU,string);
format(string,sizeof(string),"AdmCmd: Du hast dem Spieler %s (ID:%i) die Mats auf %i gesetzt.",SpielerName(pID),pID,menge);
SendClientMessage(playerid,HELLBLAU,string);
SaveUserStats(pID);
}
return 1;
}
und da wäre noch etwas wenn ich /set 0 Geld [menge] angebe sieht so aus:
kommt halt immer diese Nachricht die im Chat auf dem Screenshot ist.
Mfg.
/edit habe ein weiteres Problem:
Ingame sieht es so aus:
prntscr.com/gongh5
und so sieht meine Datenbank aus:
prntscr.com/gonh6x
Speicherst du die Drogen denn bei SaveUserStats auch in die Datenbank?
Weiterhin ist dein Drogenbefehl ein wenig komisch.
Du schreibst in der Nachricht, dass die Drogen gesetzt werden format(string,sizeof(string),"AdmCmd: Der Admin %s (ID:%i) hat dir deine Drogen auf %i gesetzt.",SpielerName(playerid),playerid,menge);, du addiest die Menge allerdings zu der derzeitigen Menge hinzu: PlayerInfo[pID][pDrugs] += menge;
Richtig wäre es so: PlayerInfo[pID][pDrugs] = menge;
Ja ich speichere es bei SaveUserStats
Dann scheint da wohl etwas nicht ganz zu funktionieren. Zeig uns die Funktion doch am besten mal und schau mal ob du etwas in den mysql logs findest
hier die funktion:
stock SaveUserStats(playerid)
{
if(!PlayerInfo[playerid][pLoggedIn]) return 1;
new query[350];
mysql_format(handle, query, sizeof(query), "UPDATE users SET level = '%d', money = '%d', kills = '%d', deaths = '%d',\
alevel = '%d', fraktion = '%d', rank = '%d', perso = '%d', spawnchange = '%d', payday = '%d', xp = '%d', xpmax = '%d',\
carlic = '%d', bikelic = '%d',flylic = '%d',waffenlic = '%d',boatlic = '%d',drugs = '%d',mats = '%d',drogendealer = '%d',\
waffendealer = '%d',busfahrer = '%d',landwirt = '%d',hure = '%d',straßenfeger = '%d',matpacks = '%d', startbonus = '%d',\
WHERE id = '%d'",
PlayerInfo[playerid][pLevel], PlayerInfo[playerid][pMoney], PlayerInfo[playerid][pKills], PlayerInfo[playerid][pDeaths],
PlayerInfo[playerid][pAlevel], PlayerInfo[playerid][pFraktion], PlayerInfo[playerid][pRank], PlayerInfo[playerid][pPerso],PlayerInfo[playerid][pSpawnchange],
PlayerInfo[playerid][pPayday],PlayerInfo[playerid][pXP],PlayerInfo[playerid][pXPMax],PlayerInfo[playerid][pCarlic],PlayerInfo[playerid][pBikelic],PlayerInfo[playerid][pFlylic],PlayerInfo[playerid][pWaffenlic],PlayerInfo[playerid][pBoatlic],
PlayerInfo[playerid][pDrugs], PlayerInfo[playerid][pMats],PlayerInfo[playerid][pDrogendealer],PlayerInfo[playerid][pWaffendealer],PlayerInfo[playerid][pBusfahrer],
PlayerInfo[playerid][pLandwirt],PlayerInfo[playerid][pHure],PlayerInfo[playerid][pStrassenfeger],PlayerInfo[playerid][pMatpacks],PlayerInfo[playerid][pStartbonus],
PlayerInfo[playerid][p_id]);
mysql_pquery(handle, query);
return 1;
}
und das ist bei logs unter errors:
[15:47:33] [plugins/mysql] cache_get_value_name_int: field 'ffraktionsname' not found
[15:47:33] [plugins/mysql] cache_get_value_name_int: field 'fdrugs' not found
[15:47:33] [plugins/mysql] cache_get_value_name_int: field 'fmats' not found
[15:47:33] [plugins/mysql] cache_get_value_name_int: field 'ffraktionsname' not found
[15:47:33] [plugins/mysql] cache_get_value_name_int: field 'fdrugs' not found
[15:47:33] [plugins/mysql] cache_get_value_name_int: field 'fmats' not found
[15:47:33] [plugins/mysql] cache_get_value_name_int: field 'ffraktionsname' not found
[15:47:33] [plugins/mysql] cache_get_value_name_int: field 'fdrugs' not found
[15:47:33] [plugins/mysql] cache_get_value_name_int: field 'fmats' not found
[15:47:33] [plugins/mysql] cache_get_value_name_int: field 'ffraktionsname' not found
[15:47:33] [plugins/mysql] cache_get_value_name_int: field 'fdrugs' not found
[15:47:33] [plugins/mysql] cache_get_value_name_int: field 'fmats' not found
[15:47:33] [plugins/mysql] cache_get_value_name_int: invalid reference passed
[15:47:33] [plugins/mysql] cache_get_value_name_int: invalid reference passed
[15:47:33] [plugins/mysql] cache_get_value_name_int: invalid reference passed
[15:47:33] [plugins/mysql] cache_get_value_name_int: invalid reference passed
[15:47:33] [plugins/mysql] cache_get_value_name_int: invalid reference passed
[15:47:33] [plugins/mysql] cache_get_value_name_int: invalid reference passed
[15:48:40] [plugins/mysql] mysql_format: destination size '350' is too small
[15:48:40] [plugins/mysql] error #1065 while executing query "": Query was empty
[15:49:47] [plugins/mysql] mysql_format: destination size '350' is too small
[15:49:47] [plugins/mysql] error #1065 while executing query "": Query was empty
[15:49:55] [plugins/mysql] mysql_format: destination size '350' is too small
[15:49:56] [plugins/mysql] error #1065 while executing query "": Query was empty
[15:47:33] [plugins/mysql] cache_get_value_name_int: field 'ffraktionsname' not found
[15:47:33] [plugins/mysql] cache_get_value_name_int: field 'fdrugs' not found
[15:47:33] [plugins/mysql] cache_get_value_name_int: field 'fmats' not found
Du müsstest mal in deiner Mysql-Tabelle die drei Spalten hinzufügen (ffraktionsname fdrugs fmats)
Weiterhin sagt folgendes:
[15:49:55] [plugins/mysql] mysql_format: destination size '350' is too small
[15:49:56] [plugins/mysql] error #1065 while executing query "": Query was empty
Das die new query[350]; zu klein ist, du müsstest den Wert hochsetzten, danach sollte es gehen
ocmd:open(playerid, params[])
{
if(IsPlayerConnected(playerid))return 1;
if(IsPlayerInRangeOfPoint(playerid, 2.0, 2495.2378,-1690.5319,14.7656)) //Grove Street Eingang
{
if(PlayerInfo[playerid][pMember] == 13 || PlayerInfo[playerid][pLeader] == 13)return GameTextForPlayer(playerid, "~r~Du hast keinen~n~Schluessel.", 5000, 6);
if(gGroveDoor == 0)
{
gGroveDoor = 1;
GameTextForPlayer(playerid, "~r~Abgeschlossen", 3000, 6);
}
else if(gGroveDoor == 1)
{
gGroveDoor = 0;
GameTextForPlayer(playerid, "~g~Aufgeschlossen", 3000, 6);
}
}
else if(IsPlayerInRangeOfPoint(playerid, 2.0, 2807.619873,-1171.899902,1025.570312)) //Grove Street Ausgang
{
if(PlayerInfo[playerid][pMember] == 13 || PlayerInfo[playerid][pLeader] == 13)return GameTextForPlayer(playerid, "~r~Du hast keinen~n~Schluessel.", 5000, 6);
if(gGroveDoor == 0)
{
gGroveDoor = 1;
GameTextForPlayer(playerid, "~r~Abgeschlossen", 3000, 6);
}
else if(gGroveDoor == 1)
{
gGroveDoor = 0;
GameTextForPlayer(playerid, "~g~Aufgeschlossen", 3000, 6);
}
}
return 1;
}
Alles anzeigen
Hallo, Ich habe das Problem wen ich mit der Fraktion ID 13 /open mache Passiert nichts was mache ich falsch?
ocmd:open(playerid, params[])
{
if(IsPlayerConnected(playerid))return 1;
if(IsPlayerInRangeOfPoint(playerid, 2.0, 2495.2378,-1690.5319,14.7656)) //Grove Street Eingang
{
if(PlayerInfo[playerid][pMember] == 13 || PlayerInfo[playerid][pLeader] == 13)return GameTextForPlayer(playerid, "~r~Du hast keinen~n~Schluessel.", 5000, 6);
if(gGroveDoor == 0)
{
gGroveDoor = 1;
GameTextForPlayer(playerid, "~r~Abgeschlossen", 3000, 6);
}
else if(gGroveDoor == 1)
{
gGroveDoor = 0;
GameTextForPlayer(playerid, "~g~Aufgeschlossen", 3000, 6);
}
}
else if(IsPlayerInRangeOfPoint(playerid, 2.0, 2807.619873,-1171.899902,1025.570312)) //Grove Street Ausgang
{
if(PlayerInfo[playerid][pMember] == 13 || PlayerInfo[playerid][pLeader] == 13)return GameTextForPlayer(playerid, "~r~Du hast keinen~n~Schluessel.", 5000, 6);
if(gGroveDoor == 0)
{
gGroveDoor = 1;
GameTextForPlayer(playerid, "~r~Abgeschlossen", 3000, 6);
}
else if(gGroveDoor == 1)
{
gGroveDoor = 0;
GameTextForPlayer(playerid, "~g~Aufgeschlossen", 3000, 6);
}
}
return 1;
}
Alles anzeigen
Hallo, Ich habe das Problem wen ich mit der Fraktion ID 13 /open mache Passiert nichts was mache ich falsch?
Beim IsPlayerConnected hat das ! gefehlt.
Und die Abfrage auf Fraktion 13 war falsch herum, die habe ich negiert:
ocmd:open(playerid, params[])
{
if(!IsPlayerConnected(playerid)) return 1;
if(IsPlayerInRangeOfPoint(playerid, 2.0, 2495.2378,-1690.5319,14.7656)) //Grove Street Eingang
{
if(PlayerInfo[playerid][pMember] != 13 && PlayerInfo[playerid][pLeader] != 13) return GameTextForPlayer(playerid, "~r~Du hast keinen~n~Schluessel.", 5000, 6);
if(gGroveDoor == 0)
{
gGroveDoor = 1;
GameTextForPlayer(playerid, "~r~Abgeschlossen", 3000, 6);
}
else if(gGroveDoor == 1)
{
gGroveDoor = 0;
GameTextForPlayer(playerid, "~g~Aufgeschlossen", 3000, 6);
}
}
else if(IsPlayerInRangeOfPoint(playerid, 2.0, 2807.619873,-1171.899902,1025.570312)) //Grove Street Ausgang
{
if(PlayerInfo[playerid][pMember] != 13 && PlayerInfo[playerid][pLeader] != 13) return GameTextForPlayer(playerid, "~r~Du hast keinen~n~Schluessel.", 5000, 6);
if(gGroveDoor == 0)
{
gGroveDoor = 1;
GameTextForPlayer(playerid, "~r~Abgeschlossen", 3000, 6);
}
else if(gGroveDoor == 1)
{
gGroveDoor = 0;
GameTextForPlayer(playerid, "~g~Aufgeschlossen", 3000, 6);
}
}
return 1;
}
Egal was für Befehle ich InGame schicke, es kommt nichts. Ich habe keinerlei Errors/Warnings .
else if(IsPlayerInRangeOfPoint(playerid, 2.0, 2495.2817,-1690.7841,14.7656)) //Grove Street Eingang
{
if(PlayerInfo[playerid][pMember] != 13 && PlayerInfo[playerid][pLeader] != 13)
{
SetPlayerInterior(playerid, 8);
SetPlayerVirtualWorld(playerid, 4);
SetPlayerPos(playerid, 2807.5308,-1174.7401,1025.5703);
}
else
{
if(gGroveDoor == 0)
{
SetPlayerInterior(playerid, 8);
SetPlayerVirtualWorld(playerid, 4);
SetPlayerPos(playerid, 2807.5308,-1174.7401,1025.5703);
}
else if(gGroveDoor == 1)
{
GameTextForPlayer(playerid, "~r~Abgeschlossen!", 1000, 1);
}
}
}
else if(IsPlayerInRangeOfPoint(playerid, 2.0, 2807.5308,-1174.7401,1025.5703) && GetPlayerInterior(playerid) == 8 && GetPlayerVirtualWorld(playerid) == 4) // Grove Street Ausgang
{
SetPlayerInterior(playerid, 0);
SetPlayerVirtualWorld(playerid, 0);
SetPlayerPos(playerid, 2495.2817,-1690.7841,14.7656);
}
Alles anzeigen
Langsam Nervt es mich.....
Raus komme ich aber Rein komme ich nicht mehr was das -.-?
Hey ich habe mal eine Frage und zwar möchte ich ein Dice und einen Diceinvite befehl erstellen und ich verstehe unter anderem nicht wie ich eine zufällige zahl von 1-6 mache und wie ich es mache das wenn die person /diceinvite [ID] [Preis] [Runden 1-3] eingebe das der andere Spieler ein Dialog bekommt wodrin er sieht um Wieviel und wieviele runden
PS ich habe noch nicht angefangen aufgrund da ich halt nicht weiß wie man eine random zahl generieren lässt.
mfg
wie man eine random zahl generieren lässt.
new zahl = random(6)+1; //Gibt dir eine random Zahl zwischen 1 & 6 (also wie ein Würfel xD)
Ich will das ganz gern verstehen deswegen frag ich dich jetzt einfach mal warum dieses +1? das mit der 6 kann ich ja verstehen...
Meine frage jetzt noch wenn ich z.B einen /bankrob befehl mache soll er einen Maximal Betrag von 120k bekommen heißt das es müsste so aussehen?
new beute = random(120000)+1;
So habe nun einiges gemacht nun weiß ich einfach nicht weiter, weiß nichtmal ob das alles richtig ist aber habe das versucht wie ich es jetzt verstanden habe, vielleicht kann mal jemand drüber schauen aber es ist bestimmt noch lange nicht fertig. Das ist das was ich jetzt alles habe:
ocmd:dice(playerid,params[])
{
if(!IsPlayerConnected(playerid)) return SendClientMessage(playerid,ROT,"Du kannst den Befehl noch nicht benutzen!");
new string[64];
new zahl = random(6)+1;
format(string,sizeof(string), "Der Spieler %s würfelte die Zahl %i",SpielerName(playerid),zahl);
SendClientMessage(playerid,0xBE44FFFF,string);
return 1;
}
ocmd:diceinvite(playerid,params[])
{
if(!IsPlayerConnected(playerid)) return SendClientMessage(playerid,ROT,"Du kannst den Befehl noch nicht benutzen!");
new pID, runden, string[128], einsatz;
if(sscanf(params,"uii",pID,runden,einsatz))return SendClientMessage(playerid,GELB,"[INFO]: /diceinvite [playerid/Name][Runden 1-3] [Menge/Betrag]");
{
format(string,sizeof(string),"Der Spieler %s hat dich zu %i Runde/n um %i$ eingeladen!",SpielerName(playerid),runden,einsatz);
SendClientMessage(playerid,HELLBLAU,string);
SendClientMessage(playerid,HELLBLAU,"Um die einladung anzunehmen tippe: /accept diceinvite");
}
return 1;
}
ocmd:accept(playerid,params[])
{
new cmd;
if(strcmp(cmd,"dice",true) == 0)
{
SendClientMessage(playerid,GELB,"Die Würfelrunde wird nun gestartet, viel Glück!");
}
return 1;
}
deswegen frag ich dich jetzt einfach mal warum dieses +1?
Die Funktion random(x) gibt dir eine zufällige Zahl in dem Bereich von [0, ..., x-1] wieder.
Da ein Würfel aber keine 0 als Zahl hat und auch eine 6 musst du dementsprechend noch +1 machen, damit das Intervall von [1, ..., x] geht ![]()
new beute = random(120000)+1;
Hier könnte der User eine Beute von 1$ - 120.000$ machen, korrekt.
Bei deinem Code, bin ich gerade zu faul dir das zu schreiben, sry xD