new add;
Wen ich das für 266 so definiere warum schmeisst der mir dann noch errors rein ?!
new add;
Wen ich das für 266 so definiere warum schmeisst der mir dann noch errors rein ?!
Jetzt funktioniert's, aber ich erhalte zufällige Waffen, liegt das am Code? Weil ich 100 % die richtigen IDs zu den richtigen Pickup Models eingetragen habe.
Mache bitte einen Thread auf und poste dort den gesamten dazugehörigen aktuellen Code.
Habe auch ein kleinen Problem, wenn ich den Befehl /fraktionen eingebe bekomme ich eine Debug Meldung in der Konsole.
Fehlercode:
[21:41:56] [debug] Run time error 4: "Array index out of bounds"
[21:41:56] [debug] Accessing element at index 6 past array upper bound 5
[21:41:56] [debug] AMX backtrace:
[21:41:56] [debug] #0 00032e88 in public ocmd_fraktionen (playerid=0, ... <1 argument>) at C:\Users\xxx\xxx\xxx\xxx.pwn:1246
[21:41:56] [debug] #1 native CallLocalFunction () from samp-server.exe
[21:41:56] [debug] #2 0000104c in public OnPlayerCommandText (playerid=0, cmdtext[]=@00981ce8 "/fraktionen") at C:\Users\xxx\xxx\xxx\include\ocmd.inc:78
Code:
ocmd:fraktionen(playerid)
{
new string[2000];
string = "Fraktionsid\tFraktionsname\tLeader\tMemberanzahl";
for(new i=1; i < MAX_FRAKS+1; i++)
{
format(string,sizeof(string),"%s\n%d\t%s\t%s\t%d\n",string,fData[i][fId],fData[i][fName],fData[i][fLeaderName],fData[i][fMemberInt]);
}
ShowPlayerDialog(playerid,DIALOG_FRACDATA,DIALOG_STYLE_TABLIST_HEADERS,"Fraktionen",string,"Mehr Infos","Abbrechen");
return 1;
}
Alles anzeigen
Mach das +1 bei MAX_FRAKS weg.
Im Debug steht auch "Run time error 4: "Array index out of bounds"
Heisst soviel wie du greifst auf einen Index Bereich zu der nicht existiert.
ocmd:fraktionen(playerid)
{
new string[2000];
string = "Fraktionsid\tFraktionsname\tLeader\tMemberanzahl";
for(new i=1; i < MAX_FRAKS; i++)
{
format(string,sizeof(string),"%s\n%d\t%s\t%s\t%d\n",string,fData[i][fId],fData[i][fName],fData[i][fLeaderName],fData[i][fMemberInt]);
}
ShowPlayerDialog(playerid,DIALOG_FRACDATA,DIALOG_STYLE_TABLIST_HEADERS,"Fraktionen",string,"Mehr Infos","Abbrechen");
return 1;
}
Alles anzeigen
@TheBlueFireKing danke, klappt nun
Jetzt habe ich eine neue Frage. Ich wollte mir eine Funktion basteln, womit man abfragen kann ob das Fahrzeug ein Fraktionfahrzeug ist, sprich so:
Jedoch weiß ich nicht wie ich die Abfrage am besten ausführe.
Wie erstellst du die Fraktionsfahrzeuge denn?
Wie erstellst du die Fraktionsfahrzeuge denn?
wieso dynamic ?
stock IsFracVehicle(vehicleid)
{
for(new i = 0; i < sizeof(fCar); i++) if(fCar[i][fcVID] == vehicleid) return 1;
return 0;
}
wieso dynamic ?
Wenn er mehr als 2000 Fahrzeuge erstellen will, benötigt er einen Streamer, um diese dynamisch zu verteilen.
ja das weis ich aber ich meine nicht das er 2000 fahrzeuge hatt
aber ist oke
MFG
MilleR
Erstmal vielen Dank @Jeffry
Jetzt habe ich aber nochmal ein Problem welches ich mir nicht erklären kann.
Undzwar wird mir der Leader nicht angezeigt im Dialog, sprich die Memberanzahl rutscht eins nach vorne (siehe Bild)
Um den Fehler auf die schliche zu kommen, habe ich ein print in die Funktion gesetzt und da wird alles ausgegeben.
ocmd:fraktionen(playerid)
{
new string[2000];
string = "Fraktionsid\tFraktionsname\tLeader\tMemberanzahl";
for(new i=1; i < MAX_FRAKS; i++){
if(fData[i][fId] != 0){
format(string,sizeof(string),"%s\n%d\t%s\t%s\t%d\n",string,fData[i][fId],fData[i][fName],fData[i][fLeaderName],fData[i][fMemberInt]);
}
}
_ShowPlayerDialog(playerid,DIALOG_FRACDATA,DIALOG_STYLE_TABLIST_HEADERS,"Fraktionen",string,"Mehr Infos","Abbrechen");
return 1;
}
Alles anzeigen
Function _GetLeader(fid){
new rows, fields;
cache_get_data(rows, fields);
if(rows)
{
cache_get_field_content(0, "playername", fData[fid][fLeaderName], dbhandle, MAX_PLAYER_NAME+10);
printf("Leadername: %s - Frakid: %d",fData[fid][fLeaderName],fid);
}else{
format(fData[fid][fLeaderName],15,"Niemand");
}
return 1;
}
Alles anzeigen
print:
An was liegt der Fehler?
Wird _GetLeader auch vor Ausführen des Befehls aufgerufen?
Wenn ja, dann wird möglicherweise die fLeaderName Variable durch irgendwas überschrieben.
Hai,
ich wollte gerne das die MySQL Tabellen vom Script aus erstellt werden, jetzt möchte ich gerne wissen,
wie ich dies am besten tue.
Direkt in OnGameModeInit oder doch lieber mit einem Stock bzw Public?
Hier ein Beispiel dazu:
[jTuT] Fraktions-Fahrzeug-System mit MySQL R39-2
Stock oder Public macht für einen simplen Aufruf keinen wirklichen Unterschied.
Perfekt! Ich danke dir, klappt super.
Habe nun ein ganz anderes Problem, mein Script wird Geladen und Co, aber es wird keiner Funktion ausgeführt!
Egal welche, nicht mal die einfachste Funktion führt das Script aus.
public OnPlayerRequestClass(playerid, classid)
{
// *** Sonstiges ***
SetPlayerColor(playerid, -1);
ResetPlayerData(playerid);
// *** Spieler Login / Register ***
if(!sInfo[playerid][sEingeloggt])
{
new query[128];
mysql_format(Handle, query, 128, "SELECT `ID` FROM `spieler` WHERE `Name` = '%e'", sInfo[playerid][sName]);
mysql_pquery(Handle, query, "OnUserCheck", "d", playerid);
}
return 1;
}
Und er führt zB den pquery nicht aus.
forward OnUserCheck(playerid);
public OnUserCheck(playerid)
{
new string[256];
ClearPlayerChat(playerid);
if(cache_get_row_count() == 0)
{
format(string, 256, "{FFFFFF}\tHerzlich willkommen {00FF00}%s{FFFFFF}!\nEs gibt keinen Eintrag in der Datenbank mit deinem Spielernamen, solltest du schon einen Charakter besitzen, so klicke bitte auf 'Verlassen'", sInfo[playerid][sName]);
ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "{FFFFFF}Sensix Reallife - Registration", string, "Weiter", "Verlassen");
return 1;
}
else
{
format(string, 256, "{FFFFFF}\tHerzlich willkommen {00FF00}%s{FFFFFF}!\nEs gibt keinen Eintrag in der Datenbank mit deinem Spielernamen, solltest du schon einen Charakter besitzen, so klicke bitte auf 'Verlassen'", sInfo[playerid][sName]);
ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "{FFFFFF}Sensix Reallife - Einloggen", string, "Weiter", "Verlassen");
return 1;
}
}
Habt ihr eine Lösung dafür?
Findet grade jemand den Fehler im Sytax? Updated irgendwie nur Teile der Querry
new query[3000];
mysql_format(handle, query, sizeof(query), "UPDATE Benutzer SET Level = '%d', AdminLevel = '%d', Supporter = '%d', DonateRank = '%d', UpgradePoints = '%d', Spielzeit = '%d', Registered = '%d', Geschlecht = '%d', Age = '%d', Herkunft = '%d', CK = '%d', Muted = '%d', Respect = '%d', Money = '%d', Bank = '%d', Kredit = '%d', KreditDauer = '%d', Crimes = '%d', Kills = '%d', Deaths = '%d', Arrested = '%d', ",
PlayerInfo[playerid][pLevel], PlayerInfo[playerid][pAdmin], PlayerInfo[playerid][pSupporter], PlayerInfo[playerid][pDonateRank], PlayerInfo[playerid][gPupgrade], PlayerInfo[playerid][pConnectTime], PlayerInfo[playerid][pReg], PlayerInfo[playerid][pSex], PlayerInfo[playerid][pAge], PlayerInfo[playerid][pOrigin], PlayerInfo[playerid][pCK], PlayerInfo[playerid][pMuted], PlayerInfo[playerid][pExp],
PlayerInfo[playerid][pCash], PlayerInfo[playerid][pAccount], PlayerInfo[playerid][pPlayerKredit], PlayerInfo[playerid][pPlayerKreditDauer], PlayerInfo[playerid][pCrimes], PlayerInfo[playerid][pKills], PlayerInfo[playerid][pDeaths], PlayerInfo[playerid][pArrested]);
mysql_format(handle, query, sizeof(query), "%eWantedDeaths = '%d', Phonebook = '%d', LottoNr = '%d', Fishes = '%d', BiggestFish = '%d', Job = '%d', HeadValue = '%d', Jailed = '%d', GangJailed = '%d', Mauled = '%d', JailTime = '%d', Materials = '%d', Drugs = '%d', BoxMaterials = '%d', BoxDrugs = '%d', FightingStyle = '%d', Leader = '%d', Member = '%d', FMember = '%d', Rank = '%d', ",
query, PlayerInfo[playerid][pWantedDeaths], PlayerInfo[playerid][pPhoneBook], PlayerInfo[playerid][pLottoNr], PlayerInfo[playerid][pFishes], PlayerInfo[playerid][pBiggestFish], PlayerInfo[playerid][pJob], PlayerInfo[playerid][pHeadValue], PlayerInfo[playerid][pJailed], PlayerInfo[playerid][pGangJailed], PlayerInfo[playerid][pMauled], PlayerInfo[playerid][pJailTime], PlayerInfo[playerid][pMats], PlayerInfo[playerid][pDrugs],
PlayerInfo[playerid][pBoxMats], PlayerInfo[playerid][pBoxDrugs], GetPlayerFightingStyle(playerid), PlayerInfo[playerid][pLeader], PlayerInfo[playerid][pMember], PlayerInfo[playerid][pFMember], PlayerInfo[playerid][pRank]);
mysql_format(handle, query, sizeof(query), "%eSkin = '%d', ContractTime = '%d', DetSkill = '%d', SexSkill = '%d', BoxSkill = '%d', LawSkill = '%d', MechSkill = '%d', JackSkill = '%d', CarSkill = '%d', NewsSkill = '%d', DrugsSkill = '%d', CookSkill = '%d', FishSkill = '%d', pSHealth = '%f', pHealth = '%f', Interior = '%d', Local = '%d', Team = '%d', Model = '%d', PhoneNr = '%d', ",
query, PlayerInfo[playerid][pChar], PlayerInfo[playerid][pContractTime], PlayerInfo[playerid][pDetSkill], PlayerInfo[playerid][pSexSkill], PlayerInfo[playerid][pBoxSkill], PlayerInfo[playerid][pLawSkill], PlayerInfo[playerid][pMechSkill], PlayerInfo[playerid][pJackSkill], PlayerInfo[playerid][pCarSkill], PlayerInfo[playerid][pNewsSkill], PlayerInfo[playerid][pDrugsSkill], PlayerInfo[playerid][pCookSkill], PlayerInfo[playerid][pFishSkill],
PlayerInfo[playerid][pSHealth], PlayerInfo[playerid][pHealth], PlayerInfo[playerid][pInt], PlayerInfo[playerid][pLocal], PlayerInfo[playerid][pTeam], PlayerInfo[playerid][pModel], PlayerInfo[playerid][pPnumber]);
mysql_format(handle, query, sizeof(query), "%eHouse = '%d', Bizz = '%d', HandyGeld = '%d', HandyVer = '%d', Pos_x = '%f', Pos_y = '%f', Pos_z = '%f', CarLic = '%d', NewLic = '%d', FlyLic = '%d', BoatLic = '%d', FishLic = '%d', GunLic = '%d', LKWLic = '%d', RollerLic = '%d', MotoLic = '%d', Zig = '%d', Kekse = '%d', ZigSucht = '%d', Gun1 = '%d', ",
query, PlayerInfo[playerid][pPhousekey], PlayerInfo[playerid][pPbiskey], PlayerInfo[playerid][pHandyGeld], PlayerInfo[playerid][pHandyVer], PlayerInfo[playerid][pPos_x], PlayerInfo[playerid][pPos_y], PlayerInfo[playerid][pPos_z], PlayerInfo[playerid][pCarLic], PlayerInfo[playerid][pNewLic], PlayerInfo[playerid][pFlyLic], PlayerInfo[playerid][pBoatLic], PlayerInfo[playerid][pFishLic], PlayerInfo[playerid][pGunLic],
PlayerInfo[playerid][pLKWLic], PlayerInfo[playerid][pRollerLic], PlayerInfo[playerid][pMotoLic], PlayerInfo[playerid][pZig], PlayerInfo[playerid][pKekse], PlayerInfo[playerid][pZigSucht], PlayerInfo[playerid][pGun1]);
mysql_format(handle, query, sizeof(query), "%eGun2 = '%d', Gun3 = '%d', Gun4 = '%d', Ammo1 = '%d', Ammo2 = '%d', Ammo3 = '%d', Ammo4 = '%d', CarTime = '%d', Mulltime = '%d', PayDay = '%d', PayDayHad = '%d', CDPlayer = '%d', Wins = '%d', Loses = '%d', AlcoholPerk = '%d', DrugPerk = '%d', MiserPerk = '%d', PainPerk = '%d', TraderPerk = '%d', Tutorial = '%d', Warnings = '%d', ",
query, PlayerInfo[playerid][pGun2], PlayerInfo[playerid][pGun3], PlayerInfo[playerid][pGun4], PlayerInfo[playerid][pAmmo1], PlayerInfo[playerid][pAmmo2], PlayerInfo[playerid][pAmmo3], PlayerInfo[playerid][pAmmo4], PlayerInfo[playerid][pCarTime], PlayerInfo[playerid][pMulltime], PlayerInfo[playerid][pPayDay], PlayerInfo[playerid][pPayDayHad], PlayerInfo[playerid][pCDPlayer], PlayerInfo[playerid][pWins],
PlayerInfo[playerid][pLoses], PlayerInfo[playerid][pAlcoholPerk], PlayerInfo[playerid][pDrugPerk], PlayerInfo[playerid][pMiserPerk], PlayerInfo[playerid][pPainPerk], PlayerInfo[playerid][pTraderPerk], PlayerInfo[playerid][pTut], PlayerInfo[playerid][pWarns]);
mysql_format(handle, query, sizeof(query), "%eAdjustable = '%d', Fuel = '%d', Married = '%d', MarriedTo = '%e', SpawnChange = '%d', WantedLevel = '%d', WantedPoints = '%d', PlayMinutes = '%d', GesamtMinutes = '%d', MinutesSinceAn = '%d', SFPASS = '%d', LVPASS = '%d', Offflucht = '%d', Knast = '%d', Uhr = '%d', Handy = '%d', KnastTime = '%d', Perso = '%d', FrakSperre = '%d', Gehalt = '%d', ",
query, PlayerInfo[playerid][pAdjustable], PlayerInfo[playerid][pFuel], PlayerInfo[playerid][pMarried], PlayerInfo[playerid][pMarriedTo], SpawnChange[playerid], WantedLevel[playerid], WantedPoints[playerid], PlayerInfo[playerid][pPlayMinutes], PlayerInfo[playerid][pGesamtMinutes], PlayerInfo[playerid][pMinutesSinceAn], PlayerInfo[playerid][pSFPASS], PlayerInfo[playerid][pLVPASS], OfflineFlucht[playerid],
Knast[playerid], PlayerInfo[playerid][pUhrID], PlayerInfo[playerid][pHandyID], KnastTime[playerid], PlayerInfo[playerid][pOwnPerso], PlayerInfo[playerid][pFrakSperre], PlayerInfo[playerid][pGehalt]);
mysql_format(handle, query, sizeof(query), "%eInvWeapon = '%d', InvAmmo = '%d', InvWeapon2 = '%d', InvAmmo2 = '%d', InvMats = '%d', InvDrugs = '%d', FlugTime = '%d', FarmTime = '%d', GDeaths = '%d', GKills = '%d', Meldung = '%d', Tanke = '%d', Zollpass = '%d', ZollpassTime = '%d', Gesperrt = '%d', ",
query, PlayerInfo[playerid][pInvWeapon], PlayerInfo[playerid][pInvAmmo], PlayerInfo[playerid][pInvWeapon2], PlayerInfo[playerid][pInvAmmo2], PlayerInfo[playerid][pInvMats], PlayerInfo[playerid][pInvDrugs], PlayerInfo[playerid][pFlugTime], PlayerInfo[playerid][pFarmTime], PlayerInfo[playerid][pGDeaths], PlayerInfo[playerid][pGKills], PlayerInfo[playerid][pMeldung], PlayerInfo[playerid][pPtankekey], PlayerInfo[playerid][pZollPass],
PlayerInfo[playerid][pZollPassTime], PlayerInfo[playerid][pGesperrt]);
mysql_format(handle, query, sizeof(query), "%ewaffenslot1 = '%d', waffenslot2 = '%d', waffenslot3 = '%d', waffenslot4 = '%d', waffenslot5 = '%d', waffenslot6 = '%d', waffenslot7 = '%d', waffenslot8 = '%d', waffenslot9 = '%d', waffenslot10 = '%d', waffenslot11 = '%d', waffenslot12 = '%d', waffenslot13 = '%d', ",
query, Weapons25[0], Weapons25[1], Weapons25[2], Weapons25[3], Weapons25[4], Weapons25[5], Weapons25[6], Weapons25[7], Weapons25[8], Weapons25[9], Weapons25[10], Weapons25[11], Weapons25[12]);
mysql_format(handle, query, sizeof(query), "%eammoslot1 = '%d', ammoslot2 = '%d', ammoslot3 = '%d', ammoslot4 = '%d', ammoslot5 = '%d', ammoslot6 = '%d', ammoslot7 = '%d', ammoslot8 = '%d', ammoslot9 = '%d', ammoslot10 = '%d', ammoslot11 = '%d', ammoslot12 = '%d', ammoslot13 = '%d' WHERE id = '%d'",
query, Ammo25[0], Ammo25[1], Ammo25[2], Ammo25[3], Ammo25[4], Ammo25[5], Ammo25[6], Ammo25[7], Ammo25[8], Ammo25[9], Ammo25[10], Ammo25[11], Ammo25[12], PlayerInfo[playerid][pDB_ID]);
mysql_pquery(handle, query, "", "");
Alles anzeigen
//Edit: Fehler gefunden, string war zu kurz, habe es nun in mehrere kleinere Querry's aufgeteilt
Wird _GetLeader auch vor Ausführen des Befehls aufgerufen?
Wenn ja, dann wird möglicherweise die fLeaderName Variable durch irgendwas überschrieben.
Die Funktion GetFracLeader wird nur bei Laden der Fraktionen ausgefürht, und sonnst nirgendwo.
Die Funktion GetFracLeader wird nur bei Laden der Fraktionen ausgefürht, und sonnst nirgendwo.
Lass es mal für die Fraktion 2 in dem Befehl nochmal ausführen, wird es dann korrekt angezeigt?
Wenn ja, dann überschreibst du den Wert irgendwo.
Lass es mal für die Fraktion 2 in dem Befehl nochmal ausführen, wird es dann korrekt angezeigt?
Wenn ja, dann überschreibst du den Wert irgendwo.
Habe es nun so getestet... aber es klappt nicht.
ocmd:fracleader(playerid,params[]){
SCMEx(playerid,COLOR_WHITE,"Fraktionsname: %s - Fraktionsid: %d - Leader: %s",fData[2][fName],fData[2][fId],fData[2][fLeaderName]);
printf("Fraktionsname: %s - Fraktionsid: %d - Leader: %s",fData[2][fName],fData[2][fId],fData[2][fLeaderName]);
return 1;
}