//----------------------------------------------------------
//
// GRAND LARCENY common functions include.
//
//----------------------------------------------------------
stock LoadStaticVehiclesFromFile(const filename[])
{
new File:file_ptr;
new line[256];
new var_from_line[64];
new vehicletype;
new Float:SpawnX;
new Float:SpawnY;
new Float:SpawnZ;
new Float:SpawnRot;
new Color1, Color2;
new index;
new vehicles_loaded;
file_ptr = fopen(filename,filemode:io_read);
if(!file_ptr) return 0;
vehicles_loaded = 0;
while(fread(file_ptr,line,256) > 0)
{
index = 0;
// Read type
index = token_by_delim(line,var_from_line,\',\',index);
if(index == (-1)) continue;
vehicletype = strval(var_from_line);
if(vehicletype < 400 || vehicletype > 611) continue;
// Read X, Y, Z, Rotation
index = token_by_delim(line,var_from_line,\',\',index+1);
if(index == (-1)) continue;
SpawnX = floatstr(var_from_line);
index = token_by_delim(line,var_from_line,\',\',index+1);
if(index == (-1)) continue;
SpawnY = floatstr(var_from_line);
index = token_by_delim(line,var_from_line,\',\',index+1);
if(index == (-1)) continue;
SpawnZ = floatstr(var_from_line);
index = token_by_delim(line,var_from_line,\',\',index+1);
if(index == (-1)) continue;
SpawnRot = floatstr(var_from_line);
// Read Color1, Color2
index = token_by_delim(line,var_from_line,\',\',index+1);
if(index == (-1)) continue;
Color1 = strval(var_from_line);
index = token_by_delim(line,var_from_line,\';\',index+1);
Color2 = strval(var_from_line);
//printf(\"%d,%.2f,%.2f,%.2f,%.4f,%d,%d\",vehicletype,SpawnX,SpawnY,SpawnZ,SpawnRot,Color1,Color2);
AddStaticVehicleEx(vehicletype,SpawnX,SpawnY,SpawnZ,SpawnRot,Color1,Color2,(30*60)); // respawn 30 minutes
/*new numplate_test[32+1];
format(numplate_test,32,\"GRLC{44AA33}%d\",vid);
SetVehicleNumberPlate(vid, numplate_test);*/
vehicles_loaded++;
}
fclose(file_ptr);
printf(\"Loaded %d vehicles from: %s\",vehicles_loaded,filename);
return vehicles_loaded;
}
//----------------------------------------------------------
//------------------------------------------------
stock strrest(const string[], &index)
{
new length = strlen(string);
while ((index < length) && (string[index] <= \' \'))
{
index++;
}
new offset = index;
new result[128];
while ((index < length) && ((index - offset) < (sizeof(result) - 1)))
{
result[index - offset] = string[index];
index++;
}
result[index - offset] = EOS;
return result;
}
//----------------------------------------------------------
// Tokenise by a delimiter
// Return string and index of the end determined by the
// provided delimiter in delim
stock token_by_delim(const string[], return_str[], delim, start_index)
{
new x=0;
while(string[start_index] != EOS && string[start_index] != delim) {
return_str
x++;
start_index++;
}
return_str
if(string[start_index] == EOS) start_index = (-1);
return start_index;
}
//----------------------------------------------------------
//----------------------------------------------------------
stock IsKeyJustDown(key, newkeys, oldkeys)
{
if((newkeys & key) && !(oldkeys & key)) return 1;
return 0;
}
//----------------------------------------------------------
stock PlaySoundForAll(soundid, Float:x, Float:y, Float:z)
{
for(new i=0; i<MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
PlayerPlaySound(i, soundid, x, y, z);
}
}
}
//----------------------------------------------------------
stock PlaySoundForPlayersInRange(soundid, Float:range, Float:x, Float:y, Float:z)
{
for(new i=0; i<MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i) && IsPlayerInRangeOfPoint(i,range,x,y,z))
{
PlayerPlaySound(i, soundid, x, y, z);
}
}
}
//----------------------------------------------------------
#define RETURN_USER_FAILURE -1
#define RETURN_USER_MULTIPLE -2
stock ReturnUser(text[])
{
new pos = 0;
new userid = RETURN_USER_FAILURE;
while(text[pos] < 0x21) { // Strip out leading spaces
if(text[pos] == 0) return RETURN_USER_FAILURE; // No passed text
pos++;
}
if(isNumeric(text[pos])) { // Check whole passed string
userid = strval(text[pos]);
if(userid >=0 && userid < MAX_PLAYERS)
{
if(IsPlayerConnected(userid)) return userid;
return RETURN_USER_FAILURE;
}
}
// They entered [part of] a name or the id search failed (check names just incase)
new len = strlen(text[pos]);
new count = 0;
new name[MAX_PLAYER_NAME+1];
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
GetPlayerName(i, name, sizeof(name));
if(strcmp(name, text[pos], true, len) == 0) // Check segment of name
{
if(len == strlen(name)) { // Exact match
return i;
}
else { // Partial match
count++;
userid = i;
}
}
}
}
if(!count) return RETURN_USER_FAILURE;
if(count > 1) return RETURN_USER_MULTIPLE;
return userid;
}
//----------------------------------------------------------
erre cseréld ki a mostani gl_common incedet.
D:\\Szerver\\SZERVEREK\\Alap szerver 0.3x\\pawno\\include\\dutils.inc(43) : warning 219: local variable \"hour\" shadows a variable at a preceding level
D:\\Szerver\\SZERVEREK\\Alap szerver 0.3x\\pawno\\include\\dutils.inc(43) : warning 219: local variable \"minute\" shadows a variable at a preceding level
D:\\Szerver\\SZERVEREK\\Alap szerver 0.3x\\pawno\\include\\dutils.inc(43) : warning 219: local variable \"second\" shadows a variable at a preceding level
D:\\Szerver\\SZERVEREK\\Alap szerver 0.3x\\pawno\\include\\dutils.inc(43) : warning 219: local variable \"day\" shadows a variable at a preceding level
D:\\Szerver\\SZERVEREK\\Alap szerver 0.3x\\pawno\\include\\dutils.inc(43) : warning 219: local variable \"month\" shadows a variable at a preceding level
D:\\Szerver\\SZERVEREK\\Alap szerver 0.3x\\pawno\\include\\dutils.inc(43) : warning 219: local variable \"year\" shadows a variable at a preceding level
[/quote]
ezt meg : a módban írd át ezeket year,month,day,second minute valami másra.