Mit format kannst du das doch einfach machen:
new zahl = 15,hex[4];
format(hex,sizeof(hex),"%x",zahl);
//hex = F
Mit format kannst du das doch einfach machen:
new zahl = 15,hex[4];
format(hex,sizeof(hex),"%x",zahl);
//hex = F
Was man vielleicht noch sagen sollte ist, dass die Verschlüsselung hier von md5 nichts bringt, da kein Salt verwendet wird.
Durch Rainbowtables kann man hier ganz einfach das Passwort filten, welches verwendet wurde und dann sieht man das:
098f6bcd4621d373cade4e832627b4f6 = test
ist ![]()
Also für alle die hashen wollen und nicht wollen, dass man direkt das Passwort hat, mal nach "Salt" googeln und halt einfach das Passwort mit Salt hashen lassen ![]()
mfg. ![]()
Naja, mach es z.B. so:
#define FIRST_STR_LEN 16
enum test {
a,
b,
c[FIRST_STR_LEN]
};
//Dann haste halt immer das makro
Falls du nur einen String in deinem enum hast, kannst du das auch so machen:
const n = 4; //Das ist die Anzahl der Integer in deinem enum
enum test {
a,
b,
c,
d,
z[32]
};
new x = _:test-n; //Das hier ist die größe von dem array von z nämlich genau 32
Alles anzeigen
Mein Wunsch für dieses Weihnachten ist mehr frieden auf der Welt und kein kein rassenhass mehr!
Oh ja, also Shain mach mal den IS und Alkaida platt ![]()
Danach nehm ich auch noch Schokokekse und n Glas Milch ![]()
Kd.Nr. 1337 ![]()
Suchfunktionen sind was feines:
stock GetAngleToXY(Float:X, Float:Y, Float:CurrentX, Float:CurrentY, &Float:Angle)
{
Angle = atan2(Y-CurrentY, X-CurrentX);
Angle = floatsub(Angle, 90.0);
if(Angle < 0.0) Angle = floatadd(Angle, 360.0);
}
//Benutzung:
new Float:x,Float:y,Float:z,Float:a;
GetPlayerPos(playerid,x,y,z);
GetAngleToXY(checkX,checkY,x,y,a);
SetPlayerFacingAngle(playerid,a);
Alles anzeigen
Quelle: http://forum.sa-mp.com/showthread.php?t=127404&langid=5
Was evtl noch interessant wäre ist, wie alt du bist, ob du Referenzen hast und ob du ein Headset besitzt ![]()
abfragen ob er die Taste C gedrückt hat?
Aso, ja weil bei beiden Anfangs 0 sind...
Musst halt n Limit setzen...z.B. so:
#define MAX_TEAM_LIMIT 4
Btw...um zu prüfen ob beide gleich viele Spieler haben und voll sind, einfach so:
if(countTeam(0) == countTeam(1) && countTeam(0) == MAX_TEAM_LIMIT)
{
//Hier sind beide Teams voll
}
Das kommt darauf an, was denn passieren soll...
Natürlich kann er spawnen, aber unter OnPlayerSpawn kannste ja z.B. abfragen:
if(GetPlayerTeam(playerid) == 255) //Team 255 bedeutet, dass er in keinem Team ist (bzw hier landet er, falls es voll ist).
{
SetPlayerPos(playerid,...); //Hier kannste ihn irgendwo auf die Map setzen..halt dahin, was passieren soll, falls das Team voll ist mit der Person
//Kannst ihn natürlich auch in einen Spectate Modus oder so hier versetzen :)
}
Kannst das einfach so machen:
stock countTeam(const teamid)
{
new count;
for(new i=GetPlayerPoolSize()+1; --i!=-1;)
{
if(!IsPlayerConnected(i) || IsPlayerNPC(i) || GetPlayerTeam(i) != teamid) continue;
count++;
}
return count;
}
//Und dann kannst du das so prüfen:
if(countTeam(0) == countTeam(1))
{
//Hier sind dann gleich viele Spieler im Team (also in Team 0 und Team 1)
}
Alles anzeigen
Wie hast n Forumname definiert? ![]()
Wenn es dir um das löschen geht, kannst du alternativ auch einfach so eine Funktion machen:
Dann löschst du automatisch das Geschenk, welches dir am nähsten ist (vorausgesetzt es ist mind. 15m in deiner Nähe).
stock getClosestGift(playerid)
{
new id = -1;
for(new i,Float:tmp,Float:max=15.0; i<MaxGifts; i++)
{
tmp = GetPlayerDistanceFromPoint(playerid, GiftBox[i][e_x], GiftBox[i][e_y], GiftBox[i][e_z]);
if(tmp < max) max=tmp,id=i;
}
return i;
}
//Benutzung:
new i = getClosestGift(playerid);
if(i == -1 || !GiftBox[i][e_x]) return SendClientMessage(playerid,-1,"Kein Geschenk in deiner Nähe!");
DestroyDynamicObject(GiftBox[i][e_GiftID]);
//Und dann halt der Rest
Da du ein 2 dimensionales Array hast, musste auch schon die 2. Dimension angeben ![]()
Also so schreiben:
DestroyDynamicObject( GiftBox[i][e_oID] );
So:
SetPlayerPos(playerid, GiftBox[i][e_x], GiftBox[i][e_y], GiftBox[i][e_z]+2);
Mit der Funktion bekommst du den Slot:
stock getSlotOut(const string[])
{
new p = strfind(string," ");
if(p == -1) return -1;
new p2 = strfind(string," ",false,p+1);
if(p2 == -1) return -1;
new id[11];
strmid(id,string,p,p2,sizeof(id));
return strval(id);
}
//und dann der code so:
case DIALOG_IMOBEL:
{
if(!response) return 1;
new id = getSlotOut(inputtext),string[11];
if(id == -1) return SendClientMessage(playerid,-1,"Fehler"); //Sollte eig nie vorkommen!
mobelidVar[playerid] = mobelid;
format(string,sizeof(string),"%d",id);
SendClientMessage(playerid,-1,string);
ShowPlayerDialog(playerid,DIALOG_IMOBEL2,DIALOG_STYLE_LIST,"Möbelstück","Entfernen\nAuswählen","Weiter","Abbruch");
return 1;
}
Es gibt so etwas, das nennt sich DEBUG.
Wenn du ca weißt (und das tust du), wann der Fehler auftritt bzw was du tust damit der Fehler auftritt...setze ein Print rein und dann weißte wo im Code die falsche Stelle ist...ist nicht allzu kompliziert..
Wenn du z.B. in einem Command /test Hallo 5 eingibst und der Befehl so aussieht:
CMD:test(playerid, params[])
{
new string[128],id;
if(sscanf(params,"s[3]d",string,id)) //Hallo = 5 Zeichen, hast aber nur 3 zur Verfügung....Buffer overflow
}
Das enum so schreiben:
enum _weaponData {
weapName[32],
weapAmmo,
weapDamage,
weapCostumSlot,
weapNativeSlot
}
Der fehler besteht noch immer,
danke aber für eure vielen ansätze
..ich hab das Skript kompiliert gehabt...bei mir kamen keine Fehler...
Hast du auch meinen Code kopiert und mit deinem ersetzt? ![]()
Habe da einige Sachen geändert gehabt..die man nicht direkt sieht..wie z.B. aus einer ) eine } gemacht...und Namen von Makros geändert..bzw angepasst..
Deine Makros so schreiben:
#define AMMO_EXTRA (0) //Das hier hast du vergessen...ehh weiß nicht was für n wert das haben soll
#define AMMO_NOAMMO (0)
#define AMMO_9MM (1)
#define AMMO_SHOTGUN (2)
#define AMMO_MAGNUM (3)
#define AMMO_9x19MM (4)
#define AMMO_762x39MM (5)
#define AMMO_556MM (6)
#define AMMO_762x51MM (7)
#define AMMO_THROW (8)
#define AMMO_UNABLE (9)
#define AMMTYPE_NOAMMO (0)
#define AMMTYPE_NORM (1)
#define AMMTYPE_HOLLOWPOINT (2)
#define AMMTYPE_BREAKING (3)
#define AMMTYPE_GUMMI (4)
#define WSLOT_FIST (0)
#define WSLOT_MEELE (1)
#define WSLOT_HANDGUN (2)
#define WSLOT_MAIN (3)
#define WSLOT_THROW (4)
#define WSLOT_OTHER (5)
//Und dann das so:
stock const weaponData[47][_weaponData] = {
{"Faust", AMMO_NOAMMO, 4,WSLOT_FIST,0},
{"Schlagring", AMMO_NOAMMO, 5,WSLOT_FIST,0},
{"Golfschläger", AMMO_NOAMMO, 6,WSLOT_MEELE, 1},
{"Schlagstock", AMMO_NOAMMO, 8,WSLOT_MEELE, 1},
{"Messer", AMMO_NOAMMO, 8,WSLOT_MEELE, 1},
{"Baseballschläger", AMMO_NOAMMO, 8,WSLOT_MEELE, 1},
{"Schaufel", AMMO_NOAMMO, 6,WSLOT_MEELE, 1},
{"BillardKö", AMMO_NOAMMO, 5,WSLOT_MEELE, 1},
{"Katana", AMMO_NOAMMO, 25,WSLOT_MEELE, 1},
{"Kettensäge", AMMO_NOAMMO, 25,WSLOT_MEELE, 1},
{"Dildo", AMMO_NOAMMO, 1,WSLOT_MEELE, 10},
{"Dildo", AMMO_NOAMMO, 1,WSLOT_MEELE, 10},
{"Vibrator", AMMO_NOAMMO, 1,WSLOT_MEELE, 10},
{"Vibrator", AMMO_NOAMMO, 1,WSLOT_MEELE, 10},
{"Blumenstrauß", AMMO_NOAMMO, 1,WSLOT_MEELE, 10},
{"Gehstock", AMMO_NOAMMO, 5,WSLOT_MEELE, 10},
{"Splittergranate",AMMO_THROW,0, WSLOT_THROW, 8},
{"Tränengas",AMMO_THROW,0, WSLOT_THROW, 8},
{"Molotov Cocktail", AMMO_THROW,0, WSLOT_THROW, 8},
{"Noting",-1,-1,-1,-1},
{"Noting",-1,-1,-1,-1},
{"Noting",-1,-1,-1,-1},
{"9mm", AMMO_9MM, 20,WSLOT_HANDGUN, 2},
{"9mm-SD", AMMO_9MM,15,WSLOT_HANDGUN, 2},
{"Desert Eagle", AMMO_MAGNUM, 30,WSLOT_HANDGUN, 2},
{"Shotgun", AMMO_SHOTGUN, 30,WSLOT_MAIN,3},
{"Abgesägte Shotgun", AMMO_SHOTGUN, 25,WSLOT_MAIN,3},
{"Combat Shotgun", AMMO_SHOTGUN, 20,WSLOT_MAIN,3},
{"Uzi", AMMO_9x19MM, 15,WSLOT_HANDGUN, 4},
{"Mp5", AMMO_9MM, 20,WSLOT_MAIN,4},
{"Ak-47", AMMO_762x39MM, 30,WSLOT_MAIN,5},
{"M4A1", AMMO_556MM, 30,WSLOT_MAIN,5}, // Zeile 84
{"Tec9", AMMO_9x19MM, 15,WSLOT_HANDGUN, 4},
{"Country Rifle", AMMO_762x51MM, 40,WSLOT_MAIN,6},
{"Sniper Rifle", AMMO_762x51MM, 50,WSLOT_MAIN,6},
{"RPG",AMMO_UNABLE,0,-1,7},
{"HS Rocketlauncher", AMMO_UNABLE,0,-1,7},
{"Flammenwerfer",AMMO_UNABLE,0,-1,7},
{"Minigun",AMMO_UNABLE,0,-1,7},
{"Rucksackbombe",AMMO_UNABLE,0,-1,8},
{"Detonator",AMMO_UNABLE,0,-1,12},
{"Sprühdose",AMMO_EXTRA,0,WSLOT_OTHER, 9},
{"Feuerlöscher",AMMO_EXTRA,0,WSLOT_OTHER, 9},
{"Kamera",AMMO_EXTRA,0,WSLOT_OTHER, 9},
{"Nachtsichtgerät",AMMO_UNABLE,0,-1,11},
{"Thermalgerät",AMMO_UNABLE,0,-1,11},
{"Fallschirm",AMMO_EXTRA,4,WSLOT_OTHER, 11}
};
mfg. ![]()