if(sscanf(params,"dD",color[0],color[1]))
Liegt vlt an dem großen "D"
Versuchs mal so:
if(sscanf(params,"dd",color[0],color[1]))
if(sscanf(params,"dD",color[0],color[1]))
Liegt vlt an dem großen "D"
Versuchs mal so:
if(sscanf(params,"dd",color[0],color[1]))
Daran lags, thx.
Können gespawnte zerstörte Autos gleich vom Server entfernt werden? Wenn ich als Admin ein Auto spawne und zerstöre spawnt da wo sie erstellt wurden und das ist ärgerlich.
Ja.
Unter die includes
new adminCar[MAX_VEHICLES];
Erstellen
new vehicleid = CreateVehicle...
adminCar[vehicleid] = 1;
OnVehicleSpawn
if(adminCar[vehicleid]) DestroyVehicle(vehicleid);
adminCar[vehicleid] = 0;
Well, entweder wird OnVehicleSpawn beim createn des Cars nicht ausgeführt oder du zerstörst das Auto so direkt wenn du es spawnst
Ich hoffe es findet sich Heute morgen jemand, der mir bei dem Problem helfen kann.
Undzwar wird bei mir das Registriert Datum zwar gespeichert, aber es wird leider bei jedem Login geupdated, dies sollte aber nicht der Fall sein. Und es wird bei den versuchen vom "Einloggen" = pVersuche das Jahr und der Monat in die Tabelle eingetragen.
Script: http://pastebin.com/WYGHNxLj
Hoffe es kann jemand Helfen.
Hab den Fehler gefunden
Das rote
Mit freundlichen Grüßen,
Fabi.StaR
Alles anzeigenHab den Fehler gefunden
Spoiler anzeigen
new query[450 + MAX_PLAYER_NAME],Tag,Monat,Jahr,Stunde,Minute,Sekunde;
getdate(Tag,Monat,Jahr);
gettime(Stunde,Minute,Sekunde);
format(query,sizeof(query),"%02d.%02d.%d - %02d:%02d:%d",Tag,Monat,Jahr,Stunde,Minute,Sekunde);
mysql_format(DBHandle, query, sizeof(query),"UPDATE `Accounts` SET `pAlter` = '%d', `pBargeld` = '%d', `pKontoguthaben` = '%d', `pLastLogin` = '%s', `pRegDatum` = '%s', `pLeben` = '%.1f' WHERE `pName` = '%e'",Spieler[playerid][pAlter],Spieler[playerid][pBargeld],Spieler[playerid][pKontoguthaben],query,[color=#ff0000]query[/color],Spieler[playerid][pLeben],Spieler[playerid][pName]);
mysql_tquery(DBHandle, query, "","");
Das rote
Mit freundlichen Grüßen,
Fabi.StaR
Color geht in pwn Tags nicht.
Ich helf ihm gerade schon per PN
Das rote
Wenn ich dort irgendwas ändere, dann wird garnix in die Tabelle eingetragen nicht mal der pLastLogin
ich habe dich mal in Skype geaddet
mysql_format(DBHandle, query, sizeof(query),"UPDATE `Accounts` SET `pAlter` = '%d', `pBargeld` = '%d', `pKontoguthaben` = '%d', `pLastLogin` = '%s', `pLeben` = '%.1f' WHERE `pName` = '%e'",Spieler[playerid][pAlter],Spieler[playerid][pBargeld],Spieler[playerid][pKontoguthaben],query,Spieler[playerid][pLeben],Spieler[playerid][pName]);
pRegDatum sollte nur beim Registrieren gesetzt werden.
Mir kann nicht einer sagen, was hier der Fehler ist?
C:\Users\Chris\Desktop\Scripting\PAWN\Selfmade\gamemodes\script.pwn(256) : error 010: invalid function or declaration
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
1 Error.
stock Move(){
for(new r=0; r<MAX_ROWS; r++){
new movement = random(100)+1;
if(movement <= 25){
for(new c=0; c<MAX_COUNT; c++){
new this_move = random(100)+1;
if(this_move <= 80){
new hcnt = c + 1;
switch(hcnt){
new newPos;
case 1: {newPos = NextPos(hPosition[r][Pos1]);}
case 2: {newPos = NextPos(hPosition[r][Pos2]);}
case 3: {newPos = NextPos(hPosition[r][Pos3]);}
case 4: {newPos = NextPos(hPosition[r][Pos4]);}
case 5: {newPos = NextPos(hPosition[r][Pos5]);}
case 6: {newPos = NextPos(hPosition[r][Pos6]);}
case 7: {newPos = NextPos(hPosition[r][Pos7]);}
case 8: {newPos = NextPos(hPosition[r][Pos8]);}
case 9: {newPos = NextPos(hPosition[r][Pos9]);}
}
}
}
}
}
return 1;
}
Es scheint fast so, als sei es ein Klammerfehler, denn wenn ich die letzte "}" entferne, dann bekomme ich auch keinen Error mehr, aber das kommt mir komisch vor, da die Klammern richtig gesetzt sind.
Sogar Notepad++ hat die richtig gezählt und gedeutet. Kann mir einer sagen, warum dieser Fehler kommt? Das verwirrt mich ein wenig
Hey,
habe ein System gescriptet, womit man Objekte ingame erstellen und bearbeiten kann.
Beim Bearbeiten habe ich jedoch ein Problem, und zwar ändert sich die Rotation und Position nicht.
else if(newkeys == KEY_ANALOG_DOWN) //Numpad 2
{
if(Spieler[playerid][EObj] <= 0)return 1;
new obj = Spieler[playerid][EObj];
new Float:rx,Float:ry,Float:rz; GetDynamicObjectRot(Objekt[obj][o_obj],rx,ry,rz);
SetDynamicObjectRot(Objekt[obj][o_obj],rx+0.5,ry,rz);
return StopDynamicObject(Objekt[obj][o_obj]);
}
else if(newkeys == KEY_ANALOG_LEFT) //Numpad 4
{
if(Spieler[playerid][EObj] <= 0)return 1;
new obj = Spieler[playerid][EObj];
new Float:rx,Float:ry,Float:rz; GetDynamicObjectRot(Objekt[obj][o_obj],rx,ry,rz);
SetDynamicObjectRot(Objekt[obj][o_obj],rx,ry,rz-0.5);
return StopDynamicObject(Objekt[obj][o_obj]);
}
Bei der Veränderung mit "Numpad 4" klappt es, mit "Numpad 2" jedoch nicht..
Ist dort irgendwas dran falsch?
ErikSon
Das wird wohl an deiner if-abfrage liegen
zum einen vergleicht man die bit-werte daher nutze den Bitoperator &.
Aber darin besteht nicht das Problem sondern der wert mit dem KEY_ANALOG_DOWN definiert wurde ist eventuell nicht richtig oder das Callback wird nicht aufgerufen.
Daher kannst du ja ein printf rein setzen in das Callback und dir newkeys ausgeben. Dann kennst du den Tastenwert vom Numpad 2 dieses kannst du ja nutzen zum vergleichen.
ahja
if(sscanf(params,"dD",color[0],color[1]))
D ist ein optionaler Specifer bedeutet du kannst color[1] angeben oder nicht es fehlt dort lediglich die Setzung eines Defaultwertes
if(sscanf(params,"dD(-1)",color[0],color[1]))
Das wird wohl an deiner if-abfrage liegen
zum einen vergleicht man die bit-werte daher nutze den Bitoperator &.
Aber darin besteht nicht das Problem sondern der wert mit dem KEY_ANALOG_DOWN definiert wurde ist eventuell nicht richtig oder das Callback wird nicht aufgerufen.
Daher kannst du ja ein printf rein setzen in das Callback und dir newkeys ausgeben. Dann kennst du den Tastenwert vom Numpad 2 dieses kannst du ja nutzen zum vergleichen.
Habe ich beides versucht, klappt jedoch nicht..
Hier nochmal Codeausschnitt:
else if(newkeys & KEY_ANALOG_DOWN) //Numpad 2 (Wird nicht aufgerufen)
{
if(Spieler[playerid][EObj] <= 0)return 1;
new obj = Spieler[playerid][EObj];
new Float:rx,Float:ry,Float:rz; GetDynamicObjectRot(Objekt[obj][o_obj],rx,ry,rz);
SetDynamicObjectRot(Objekt[obj][o_obj],rx+0.5,ry,rz);
printf("N2");
return StopDynamicObject(Objekt[obj][o_obj]);
}
else if(newkeys & KEY_ANALOG_LEFT) //Numpad 4 (Wird aufgerufen)
{
if(Spieler[playerid][EObj] <= 0)return 1;
new obj = Spieler[playerid][EObj];
new Float:rx,Float:ry,Float:rz; GetDynamicObjectRot(Objekt[obj][o_obj],rx,ry,rz);
SetDynamicObjectRot(Objekt[obj][o_obj],rx,ry,rz-0.5);
printf("N4");
return StopDynamicObject(Objekt[obj][o_obj]);
}
Habe ich beides versucht, klappt jedoch nicht..
Hier nochmal Codeausschnitt:
Ich glaube genau lesen ist nicht so deine Stärke ?
Das wird wohl an deiner if-abfrage liegen
zum einen vergleicht man die bit-werte daher nutze den Bitoperator &.
Aber darin besteht nicht das Problem
Daher kannst du ja ein printf rein setzen in das Callback und dir newkeys ausgeben. Dann kennst du den Tastenwert vom Numpad 2 dieses kannst du ja nutzen zum vergleichen.
Die Pfeiltasten + Numpad 2/8 werden nicht erkannt, also es wird nichts in der Konsole ausgegeben..
Bei Numpad 2/8 steht folgendes im Wiki:
ZitatOnly detected when "JOYPAD" configuration is selected for controller.
Geht das nicht auch anders?
Die anderen Tasten, wie z.B. Z/H/N werden erkannt, jedoch kann ich die Tasten in meinem System nicht nutzen..
Und warum funktionieren die Pfeiltasten/W/A/S/D nicht, also warum werden die nicht erkannt und ausgegeben?
Und warum funktionieren die Pfeiltasten/W/A/S/D nicht, also warum werden die nicht erkannt und ausgegeben?
Diese funktionieren jedoch musst du das über OnPlayerUpdate lösen mit der Funktion GetPlayerKey eventuell erkennst du darüber auch die Restlichen Numpad-Tasten.
Warum ist das so ?
Das liegt daran das dieses Callback sonst zu oft aufgerufen werden würde(könnte zu laggs führen), daher wurden nur bestimmte Tasten verwendet.
So Leute.... ich glaube ja ich bin ein Bisschen dumm gerade, aber ich finde einfach meinen Fehler nicht >.>
CreateGroup(ID, Name[])
{
new i = 0;
while(i != MAX_GROUPS)
{
if(!Group[i][gActive])
{
Group[i][gActive] = true;
/////////////////////////////////////
format(Group[i][gName], sizeof (Group[i][gName]), Name);
/////////////////////////////////////
new pName[MAX_PLAYER_NAME];
GetPlayerName(ID, pName, sizeof pName);
format(Group[i][gLeaderName], sizeof Group[i][gLeaderName],pName);
break;
}
++i;
}
return 1;
}
Error in der Format Zeile die einzeln steht:
error 032: array index out of bounds (variable "Group")
error 001: expected token: "]", but found "-identifier-"
warning 215: expression has no effect
error 001: expected token: ";", but found "]"
fatal error 107: too many error messages on one line
Hier sonst noch der Enum dazu:
#define MAX_GROUPS 50
enum groups{
gMemberMax = 15,
gName[20],
gLeaderName[MAX_PLAYER_NAME],
bool:gActive = false
}
new Group[MAX_GROUPS][groups];
sizeof (Group[i][gName])
Das geht nicht. Ließ dir durch wie enums wirklich funktionieren, dann weisst auch warum.
Trag an Stelle von sizeof (Group[i][gName]) jeweils direkt MAX_PLAYER_NAME ein.
gMemberMax = 15,
Das ist ebenfalls nicht richtig. "Ließ dir durch wie enums wirklich funktionieren, dann weisst auch warum."
Den Wert auf 15 setzen musst du direkt an der Variable, nicht im enum.
Sprich: Group[0..MAX_GROUPS-1][gMemberMax] = 15
Gleich gilt auch für bool:gActive = false
//Edit: Rechtschreibung
Danke