Hier hast du ein Beispiel für einen Editor:
[ FILTERSCRIPT ] SetObjectMaterialText
Beiträge von Jeffry
-
-
Nutzen alle diese Befehle die "ForEachPlayer" Funktion in irgendeiner Art und Weise? Wenn ja, dann liegt es möglicherweise daran.
-
Setze mal vor beide TogglePlayerControllable einen print:
printf("Toggle: playerid = %d", playerid);Kommt der print, wenn du ENTER drückst? Wenn nicht, dann wird das callback gar nicht aufgerufen, sprich es liegt an etwas anderem, möglicherweise an einem Filterscript, der auch Menus beinhaltet?
-
Der else-Teil mit dem return darf nicht in die Schleife.
if(newstate==PLAYER_STATE_DRIVER){
new Caridd = GetPlayerVehicleID(playerid);
for(new fc;fc<sizeof(FactionCars);fc++){
if(FactionCars[fc][fVehid] >= 400 && FactionCars[fc][fVehid] <= 611){
if(FactionCars[fc][fCarid] == GetPlayerVehicleID(playerid)){
for(new f;f<5;f++){
if(GetPlayerFaction(playerid) == FactionCars[fc][fFaction][f])
{
return 1;
}
}
SendClientMessage(playerid,COLOR_GREY,"Du besitzt kein Schüssel!");
return 1;
}
}
}
} -
Die Klammersetzung ist nicht ganz richtig. So wäre es richtig:
stock IsVehicleEmpty(vehicleid)
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(!IsPlayerConnected(i)) continue;
if(GetPlayerVehicleID(i) == vehicleid) return 0;
}
return 1;
}Im Befehl dann:
if(FactionCars[fc][fFaction][0] == GetPlayerFaction(playerid))
zu:
if(FactionCars[fc][fFaction][0] == GetPlayerFaction(playerid) && IsVehicleEmpty(FactionCars[fc][fCarID]))
fCarID = So wie die ID bei dir ist, von CreateVehicle. -
Lass dir mal GetPlayerAdmin(playerid) und GetPlayerFaction(playerid) über einen printf ausgeben, möglicherweise hast du nicht das Level, oder bist nicht in der Fraktion, in der du sein solltest.
-
ocmd:mhauser(playerid)
{
for(new hausid=1;hausid<MAX_HAUSER;hausid++)
{
if(PlayerDaten[playerid][pTutorial] == 1)return SendClientMessage(playerid,ORANGE," Du bist noch im Tutorial!");
if(PlayerDaten[playerid][pLogin] == 0)return SendClientMessage(playerid,ORANGE ," Du bist nicht Eingeloggt!");
{
new array[10] = {0,1,2,3,4,5,6,7,8,9};
new i, maxi=0,string[145];
for(; i < 10; ++i)if(array[maxi] < array[i]) maxi = i;
{
format(string, sizeof(string), "[MÜLL-SYSTEN]: Hausnummer: %d Menge: %d", maxi, HInfo[maxi][Muellmenge]);
SendClientMessage(playerid, ORANGE, array);
}
}
}
return 1;
}Wobei die geschwungenen Klammern nach der Zeile mit der Schleife nicht notwendig sind.
Die Meldung würde so aber ziemlich oft kommen, aber ich denke das weißt du, weil das sieht ja eh nach einem Test Befehl aus.
EDIT:
IPrototypeI: Ist mir auch klar, siehe letzter Satz. -
In der server.cfg muss nativechecker an die letzte Stelle, sonst bringt es nichts. Du lädst es als zweites.
-
Hast du das R39-2 auch in den plugins Ordner eingefügt? Wenn ja, poste bitte mal den ganzen Server Log, möglicherweise wird das Plugin nicht richtig oder gar nicht geladen.
-
Damit fange ich in dem Zusammenhang nicht wirklich was an. Ich nehme an, du willst die echte Zeit nehmen, dann ändere:
new tmphour;
if ((tmphour > ghour) || (tmphour > 12 && ghour < 14))Zu
new h, m, s;
gettime(h, m, s);
if(h >= 12 && h < 14) -
tmphour bekommt vor der Abfrage keinen Wert zugewiesen, sprich es ist 0.
Da hast du wohl gettime vergessen, um die Uhrzeit abzufragen.
Was der Wert von ghour ist weiß ich nicht, das kommt ja von woanders. -
Wenn du es in beiden Fällen haben willst, dann einfach
public OnPlayerExitedMenu(playerid)
{
TogglePlayerControllable(playerid,true);
return 1;
}und:
public OnPlayerSelectedMenuRow(playerid, row)
{
TogglePlayerControllable(playerid,true);
//...Rest hier... -
Versuch es doch jeweils erstmal mit der neusten Version, bei MySQL. wäre das R39-2.
Wenn es dann noch Fehler gibt, dann poste die wieder, dann wissen wir wenigstens in welche Richtung es geht. -
Nichts Weltbewegendes, aber damit ihr euch in Zukunft die Arbeit ersparen könnt, dies selbst aus der Liste der Waffen rauszusuchen:
stock GetWeaponSlot(weaponid) //©Jeffry
{
switch(weaponid)
{
case 0,1: return 0;
case 2..9: return 1;
case 22..24: return 2;
case 25..27: return 3;
case 28,29,32: return 4;
case 30,31: return 5;
case 33,34: return 6;
case 35..38: return 7;
case 16..18,39: return 8;
case 41..43: return 9;
case 10..15: return 10;
case 44..46: return 11;
case 40: return 12;
default: return -1;
}
return -1;
}Beispiel zur Nutzung:
Spoiler anzeigen new wSlot = GetWeaponSlot(17);
printf("Slot der Waffen-ID 17: %d", wSlot);Spoiler anzeigen Ausgabe:
ZitatSpoiler anzeigen [12/12/2014 18:12:21] Slot der Waffen-ID 17: 8
Keywords: GetWeaponSlot, GetWaffenSlot, WaffenSlot, GetWaffenIndex, GetWeaponIndex, SlotDerWaffe, IndexDerWaffe.
-
[jTool] PAWN Errors & Warnungen - Deutsche Übersetzung
Hallo,ich veröffentliche hiermit eine deutsche Übersetzung aller Errors und Warnungen des PAWN-Compilers.
Die englische Version findet sich in der Pawn Language Guide von CompuPhase (ab Seite 147).Verzichtserklärung:
Diese Übersetzung wurde mit bestem Wissen und Gewissen gemacht, trotzdem können Fehler nicht ausgeschlossen werden.
Für die sprachliche und inhaltliche Richtigkeit kann nicht garantiert werden. Fehler im Inhalt oder in der Sprache dürfen gerne an mich weitergegeben werden.
Diese Übersetzung darf nicht unter eigenem Name veröffentlicht werden, weder frei noch kommerziell.Information
Da die Übersetzung mehr als die erlaubten 40000 Zeichen hat, kann ich es leider nicht als Klartext im Thread posten. In den Downloads findet sich ein Pastebin-Link sowie eine PDF der Übersetzung.
Fragen/Probleme/Anregungen/Rückmeldungen
Bei Fragen und Problemen jeglicher Art bitte ich um die Benutzung der "Antworten" Funktion. Sollte ich binnen 48 Stunden nicht geantwortet haben, kann mir gerne eine Private Nachricht (PN) geschickt werden.
Für Anregungen betreffend Vorschlägen oder Verbesserungen bin ich jederzeit offen. Ich bitte darum, diese ebenfalls über die "Antworten" Funktion zu posten.Über Rückmeldungen würde ich mich freuen.
Changelog
- 12.12.2014: [v1.0] Erste Veröffentlichung
- 22.06.2015: [v1.0] Download-Bilder repariert
- 29.09.2015: [v1.0] Download-Link repariert
Download
Viel Spaß mit der Übersetzung, ich hoffe es hilft dem einen oder anderen im Umgang mit den Meldungen des Compilers.
Beste Grüße,
Jeffry -
if(GetPlayerState(playerid) == PLAYER_STATE_SPECTATING) //Specing
-
Und eine Liste angezeigt wird von den jeweiligen Themen,sprich:
Du hast ja jetzt aber gar nichts gemacht, oder? Das ganze System kann ich dir nicht schreiben, das ist viel zu viel.
Arbeite dich Schritt für Schritt erst mal durch, und erstelle die Codes.Für das Anklicken der Textdraws:
http://wiki.sa-mp.com/wiki/SelectTextDraw
http://wiki.sa-mp.com/wiki/OnPlayerClickTextDrawFür die Dialoge nutzt du das Tutorial von mir:
[ SCRIPTING ] [jTuT] Interaktive Dialoge
Items hinzufügen an der Stelle, an der ein Report hinzukommt.
Items entfernen, wenn ein Item nach dem Anklicken des Textdraws ausgewählt und bearbeitet worden ist. -
Der Code ist korrekt, die if Abfrage auch.
Wenn du dir wirklich sicher bist, dass der Fehler durch diesen Code verursacht wird, kannst du ihn ja mal debuggen, und dir die Werte der einzelnen Variablen ausgeben lassen.
Ich würde aber eher auf einen anderen Code tippen, der den Fehler beinhaltet.Falls du nicht weißt wie man debuggt: [ SCRIPTING ] Debugnachrichten
-
Nicht und, sondern oder.
if(carid > 611 || carid < 400) return SendClientMessage(playerid,dgelb,"Diese Fahrzeug-ID ist nicht verfuegbar!");
if(farbe1 > 255 || farbe1 < 0) return SendClientMessage(playerid,dgelb,"Diese Farb-ID ist nicht verfuegbar!");
if(farbe2 > 255 || farbe2 < 0) return SendClientMessage(playerid,dgelb,"Diese Farb-ID ist nicht verfuegbar!"); -
Verbindest du dich auf eine externe Datenbank? Wenn ja, liegt es daran, wegen der Latenz.