[SAMMELTHREAD] Kleine Scripting Fragen
- Rafelder
- Unerledigt
Dein Problem konnte durch einen User gelöst werden? Bedank dich bei ihm indem du seinen Beitrag als Hilfreich markierst sowie einen Daumen oben dalässt
Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!
Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
-
-
Das ist Zeile 196:
SetPlayerMoney(playerid,howmuch)//Zeile 196 {
PRIVATE_Last_Money[playerid]=howmuch;
GivePlayerMoney(playerid,howmuch-GetPlayerMoney(playerid));
}
#pragma unused SetPlayerMoney -
Und das in der Waffenhack.inc, Zeile 36?
-
Hab das Include entfernt da es durch dieses unnötig wird.
-
Welche Fehler bekommst du dann jetzt, ohne die Include?
ZitatUnd um wv. Millisekunden reden wir?
Bei einem einmaligen Durchlauf ist es völlig irrelevant, aber wenn einer auf Performance-Verbesserung in jeder Hinsicht schwört, dann sollte er diese Funktionen meiden, da ein Funktionsaufruf auf jeden Fall mehr Zeit beansprucht, als das Auslesen einer Variable. -
o\include\dutils.inc(196) : error 025: function heading differs from prototype ->
pawno\include\dutils.inc(196) : error 021: symbol already defined: "AC_SetPlayerMoneyEx" ->
include\dutils.inc(200) : error 017: undefined symbol "SetPlayerMoney" ->
SetPlayerMoney(playerid,howmuch)//Zeile 196 {
PRIVATE_Last_Money[playerid]=howmuch;
GivePlayerMoney(playerid,howmuch-GetPlayerMoney(playerid));
}
#pragma unused SetPlayerMoney -
Hätte mal eine kleine Frage zu den returns..
Ich zwar meistens wann man return 1 macht,
aber ich verstehe nicht was es bewirkt, kann das jemand vielleicht kurz erklären?
Auf Deutsch bedeutet es ja zurück, aber keine Ahnung wie das gemeint istVielleicht könnte mir jemand anhand dieses Codes erklären, wofür die returns hier sind:
IsPlayerAnAdmin(playerid,alevel)
{
if(sInfo[playerid][adminlevel]>=alevel)return 1;
return 0;
} -
Was bringt das eigentlich? Lösche diese Zeilen mal aus der dutils.inc raus und speichere sie.
Dann kannst du das hier ganz unten in deinen Gamemode einfügen:
stock SetPlayerMoney(playerid, amount)
{
ResetPlayerMoney(playerid);
return GivePlayerMoney(playerid, amount);
}@Kontrax:
Ein return beendet die Ausführung des aktuellen Callbacks bzw. der aktuellen Funktion an genau der Stelle, und gibt den Wert in return zurück.
Beispiel:
new tage1 = GetMonatTage(1);
//tage1 ist dann 31
new tage2 = GetMonatTage(2);
//tage2 ist dann 28
new tage3 = GetMonatTage(45234541);
//tage3 ist dann -1stock GetMonatTage(monat)
{
if(monat == 1) return 31;
//Wenn monat == 1 ist, wird das hier nicht mehr ausgeführt.
if(monat == 2) return 28;
//etc...
return -1; //Falls Fehleingabe.
}
Natürlich kann man das über einen switch machen, aber so war es anschaulicher.Generell: return beendet die momentane Funktion bzw. das Callback und gibt den Wert zurück.
return 1 wird meistens genommen um eine Funktion zu beenden und als korrekt zu markieren, return 0 um sie als fehlerhaft ausgeführt zu markieren, oder unvollständig. -
Wenn ich es nicht im script einfüge habe ich nur 1 Error folgenden:
error 021: symbol already defined: "AC_SetPlayerMoneyEx" Zeile 46831stock GivePlayerHealth(playerid, Float:health)
{//Diese Zeile
new Float:Current;
GetPlayerHealth(playerid, Current);
if((Current)+(health) > 100) return SetPlayerHealth(playerid, 100);
SetPlayerHealth(playerid, ((Current)+(health)));
return 1;
} -
Bei einem einmaligen Durchlauf ist es völlig irrelevant, aber wenn einer auf Performance-Verbesserung in jeder Hinsicht schwört, dann sollte er diese Funktionen meiden, da ein Funktionsaufruf auf jeden Fall mehr Zeit beansprucht, als das Auslesen einer Variable.
Sind 100000 Durchgänge gut?wenn ja
MAX_PLAYERS ist immernoch bei 30
Download: http://puu.sh/gqK71/85195ebb55.rarAusserdem müsste ich ja sogar MAX_PLAYERS auf 1000 lassen, wenn ich es mir recht überlege.
Ich sag mal so 2:0 für GetPlayerPoolSize()
P.s. unter fairen bedingungen
MAX_PLAYER ist nun wieder auf 1000
-
-
whitetiiger:
Les dir den Post nochmal durch.
http://forum.sa-mp.de/gta-mult…ng-fragen-794#post2041761
Es geht um diese Schleife:
for(new i=0; i<=biggestPlayerID; i++)
Teste es mal damit.Dass MAX_PLAYERS nicht unbedingt schneller ist ist mir klar, GetPlayerPoolSize gibt ja bei nur einem Spieler eben 1 zurück. Es müssten mehr Spieler online sein, aber teste es mal mit der biggestPlayerID-Schleife.
Corvus: In der Zeile steht davon nichts. Sicher, dass du die richtige Zeile hast?
Wo und wie wird denn AC_SetPlayerMoneyEx definiert? -
Im Script nirgends.
-
In irgendwelchen Includes? Möglicherweise wird es doppelt gehookt.
EDIT:
whitetiiger: Es gibt übrigens http://www.pastebin.com. Das macht mehr Sinn als .rar Dateien. -
Teste es mal damit.
Warum soll ich es bitte schön damit Testen?
Wenn über diesen "biggestPlayerID" mit "++" und "--" darüber ein Fehler kommt, ist es echt nicht mehr Witzig.bei P.s. ist übrigend die Funktion sehr schnell 1Mio. Durchläufe
Außerdem ob man nun new biggestPlayerID = GetPlayerPoolSize(); for(new i=0; i<= biggestPlayerID; i++) macht oder nur for(new i=0; i<= GetPlayerPoolSize(); i++) ist genau gleich.
Außerdem hab ich ja auch GetPlayerPoolSize()+30 genommen, wodurch die for-schleife nicht nur 1 Spieler hat, sondern 30.
Warum 30? Es sind nur noch durchschnittlich 30Spieler auf ein Server drauf#ScheißNeueRechtschreibung
-
nirgend wo finde es auch nicht in dem Include durch dieses der fehler entstand.
-
#undef AC_SetPlayerMoneyEx
-
Beitrag von Corvus ()
Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar. -
Ich habe bspw. ein Array mit Struktur:
enum TICKET_INFO{
_ticketQuestion[80]
};
new tickets[MAX_TICKET][TICKET_INFO];Ist es möglich die Größe von _ticketQuestion zu erhalten? Wenn ja, wie?
Danke im Voraus.
-
enum TICKET_INFO
{
_ticketQuestion[80],
weitereinfo,
nochneinfo
};
new tickets[MAX_TICKET][TICKET_INFO];einfach so:TICKET_INFO:weitereinfo - TICKET_INFO:_ticketQuestion
-
@BlackAce:
TICKET_INFO:_ticketState - TICKET_INFO:_ticketQuestion)
Danke, aber das gibt mir einen Tag Mismatch Fehler aus.Das genaue Enum sieht folgendermaßen aus:
enum TICKET_INFO{
_ticketCreatorID,
_ticketSupporterID,
_ticketQuestion[70],
_ticketState
};Mir wird auch das Prinzip dahinter nicht deutlich, wieso diese Subtraktion die Größe von _ticketQuestion resultiert.
Könntest du mich diesbezüglich aufklären?