Bist du eigentlich schwer von Begriff ? der wert der sich hinter HDIA_SPAWNMSG gibt es doppelt
Beiträge von IPrototypeI
-
-
Du musst die reihenfolge zwischen speichern in einer zusätzlichen array.
//editund lass den dialog nach der Schleife anzeigen
-
Nein das ist nicht davon abhängig das du zuviele case benutzt da gibt es kein Limit.
Dein Problem ist hier das du hier eine Zahl doppelt benutzt
besser gesagt die zahl hinter HDIA_SPAWNMSG,Also wenn du die case doppelt verwendest
Beispiel:
switch(beispiel){
case 0:{ }
case 1:{ }
case 2:{ }
case 2:{ }}
-
dann entferne das tag
stock mysql_GetFloat(Table[], Field[], Where[], Is[])
{
new query[128], Float:sqlfloat;
mysql_real_escape_string(Table, Table);
mysql_real_escape_string(Field, Field);
mysql_real_escape_string(Where, Where);
mysql_real_escape_string(Is, Is);
format(query, 128, "SELECT `%s` FROM `%s` WHERE `%s` = '%s'", Field, Table, Where, Is);
mysql_query(query);
mysql_store_result();
mysql_fetch_float(sqlfloat);
mysql_free_result();
return _:sqlfloat;
}//edit
man kann es auch mit forward machen wie bei public Funktionen
forward Float:mysql_GetFloat(Table[], Field[], Where[], Is[]); -
Dann hieße der eher /stats
Ganz einfach. Man kann sich der Allgemeinheit auf dem Server zeigen ODER einer einzelnen Person. Momentan geht der Befehl ohne Parameter. Ich weiss grad nur nicht, wie man dies gleichzeitig mit UND ohne schreiben soll.
entweder mit einem optionalen specifer oder in dem du das ganze anders abfrägstif(sscanf(params,"u",pID)){
.. Hier der code für den Spieler}else{
hier der code für die jeweilige person
}mit einem optionalen parameter würde das so aussehen
if(sscanf(params,"U(-1)",pID))
wird nix eingegeben wird pID den wert -1 haben den darauf hin abfragen -
Hast du vergessen den Text zu lesen
Zitat
Da brauchst du dich auch nicht wundernOnPlayerPickupDynamicPickup
Das Callback heißt auch
OnPlayerPickUpDynamicPickup
Siehe bei deinem geposteten code
public OnPlayerPickupDynamicPickup(playerid,pickupid)
und nein so wie ich muss man es nicht zwingend machen es ist eine besser Option
-
Zum Thema Fall und airbrake dort sind die Beschleunigungswerte ganz verschieden.
Bei Airbrake geht es nur nach oben , rechts, links, unten also wird sich nur 1 Float verändern , während bei einem freienfall die Z - Werte , X oder Y Werte sich verändern. -
new string[4075];Höher gehts nicht
Doch da geht mehr es ist abhängig davon wie viel Memory zur verfügung steht normal macht er lokal definierten variabeln bei 4096 Zellen dicht / 16KB. Dann bekommt man auch die nette Fehlermeldung erstmal vom kompiler sollte man dies nicht beachten so kommt es zum
crash vom server mit der Meldung
Run time error 3: "Stack/heap collision (insufficient stack size)"
Man kann jedoch auch den Memory via #pragma dynamic oder auch #emit erhöhen.
Dieser Wert bezieht sich auf einen anderen (stack/heap)Memory Block als global definierte variabeln. Diese werden
in der .amx gespeichert.Zu dem kannst du ja gerne mal nach limit suchen in der Pawn_Language_Guide.pdf
http://www.compuphase.com/pawn/Pawn_Language_Guide.pdf -
Zum Thema Antiflyhack das ist wohl das einfachste => Animation abprüfen es ist die schwimmen animation musst mal suchen wie diese heißt
und letztendlich solltest du entweder die geschwindigkeit zusätzlich abprüfen oder ob sich der spieler ihrgend wo anders aufhällt als in einem gewässer.Es bietet sich dabei jedoch eher an die geschwindigkeitzu nehmen die ist deutlich höher als im wasser und die animation.
-
Da brauchst du dich auch nicht wundern
OnPlayerPickupDynamicPickup
Das Callback heißt auch
OnPlayerPickUpDynamicPickup
an deiner stelle würde ich den aufbau anders machen
#define MAX_ICONS 1
enum icon_data {
e_ID,
a_ID,
Float:e_X,
Float:e_Y,
Float:e_Z,
e_VW,
e_INT,
Float:a_X,
Float:a_Y,
Float:a_Z,
a_VW,
a_INT,
}
new bool:IconWait[MAX_PLAYERS char];
new IconInfo[MAX_ICONS][icon_data]= {
{0,0,1351.7335,-1750.6332,13.3600,0,0,-25.884498,-185.868988,1003.546875,2222,17}
};public OnGameModeInit()
{
new i;
for(; i < MAX_ICONS; ++i){
IconInfo[i][e_ID] = CreateDynamicPickup(1318,1,IconInfo[i][e_X],IconInfo[i][e_Y],IconInfo[i][e_Z],IconInfo[i][e_VW],IconInfo[i][e_INT],-1,50);
IconInfo[i][a_ID] = CreateDynamicPickup(1318,1,IconInfo[i][a_X],IconInfo[i][a_Y],IconInfo[i][a_Z],IconInfo[i][a_VW],IconInfo[i][a_INT],-1,50);
}
return 1;
}
public OnPlayerPickUpDynamicPickup(playerid, pickupid)
{
new i;
for(; i < MAX_ICONS; ++i){
if(IconWait{playerid})return (IconWait{playerid}=false),1;
else if(IconInfo[i][e_ID] == pickupid)return SetPlayerPos(playerid,IconInfo[i][a_X],IconInfo[i][a_Y],IconInfo[i][a_Z]),IconWait{playerid}=true,SetPlayerInterior(playerid,IconInfo[i][a_INT]),SetPlayerVirtualWorld(playerid,IconInfo[i][a_VW]);
else if(IconInfo[i][a_ID] == pickupid)return SetPlayerPos(playerid,IconInfo[i][e_X],IconInfo[i][e_Y],IconInfo[i][e_Z]),IconWait{playerid}=true,SetPlayerInterior(playerid,IconInfo[i][e_INT]),SetPlayerVirtualWorld(playerid,IconInfo[i][e_VW]);
}
return 1;
} -
Das liegt an deinen Tabelleneinstellungen welche bestimmt auch für den Arsch sind und auch für integer eingestellt sind anstatt für zeichen also varchar.
-
nur ist das ein string und kein integer
mysql_SetString("accounts", "Banngrund", SpielerInfo[playerid][Banngrund], "Name", SpielerInfo[playerid][pName]);
strcat(SpielerInfo[playerid][Banngrund],mysql_GetString("accounts", "Banngrund", "Name", SpielerInfo[playerid][pName]));
-
Nein, weil du doch in der Lage sein wirst mir deinen Code doch auch zu posten beziehungsweise zu erläutern was du bereit gemacht hast ob sowas vorhanden ist etc..
-
Das liegt daran das er die schleife durchgeht
sollte so gehen ist jedoch jetzt keine wirklich schöne lösung es würde erstmal sinn machen die einträge raus zu filtern mit den entsprechenden ids und davon einen zufälligen wert zu ermitteln
if(strcmp(inputtext, "Maennlich", true) == 0)
{
new rand;
for(;;)
{
rand = random(sizeof(serverSkins));
if(serverSkins[rand ][sFraktion] == 0 && serverSkins[rand ][sSex] == 1)break;
}
SetPlayerSkinEx(playerid, serverSkins[rand][sSkinID]);
Spieler[playerid][pTutorial] = 0;
SpawnPlayerEx(playerid);
} -
Wenn du so deine pickups nur deklariert hast wie oben geschrieben wird dies aus nicht funktionieren
CreateDynamicPickup(1318,1,1352.4542,-1759.2408,13.5078,0,-1,-1,50);dazu sollte schon die id des Pickups im integer speichern
vuzsenter = CreateDynamicPickup(1318,1,1352.4542,-1759.2408,13.5078,0,-1,-1,50);
-
es sind die querys aus maddins tutorial, wenn du das meinst, und nun wird der banngrund in der datenbank mit 0 ausgegeben
Dann speicherst du den Bangrund entweder nicht oder falsch. beachte dabei das dies ein string ist
-
Beim anzeigen lass zuerst das Textdraw anzeigen mit der Transparents und danach das mit dem Text.
Weil so liegt die Box über dem Text und dunkelt dieses ab.
//edit um mal das ganze was !TheO geschrieben hat noch zu erläutern.
Wenn du das ganze so erstellst kommst du bald an das Limit. Da jedoch PlayerTextdraws das ganze für den spieler einmal erstellt wird und nicht mehrmals.
Du musst dir die PlayerTextdraws wie CreatePlayerObject vorstellen. Ein streamer kann um das limit an einem punkt herrumarbeiten wenn du die Objecte mit CreateObject erstellst kommst du schnell ans limit. -
wie wäre es wenn du die position ausließt und temporär zwischen speicherst
-
Abgesehen davon könntest du vllt ein Screen posten ich kann mir darunter jetzt leider nix vorstellen wie das verdunkelt dargestellt wird.
-
Wie wärs mit einem % Wert?
am besten kommst du jetzt noch mit em oder pt.
Die % werte besser gesagt die zahl dahinter entsteht aus einem Eltern-Element.