Начальная ревизия, нужно исправить скорую, баг со смертью игрока.
This commit is contained in:
157
include/gl_common.inc
Normal file
157
include/gl_common.inc
Normal file
@@ -0,0 +1,157 @@
|
||||
//----------------------------------------------------------
|
||||
//
|
||||
// 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,%d,%f,%f,%f,%f,%d,%d",total_vehicles_from_files+vehicles_loaded+1,vehicletype,SpawnX,SpawnY,SpawnZ,SpawnRot,Color1,Color2);
|
||||
|
||||
AddStaticVehicleEx(vehicletype,SpawnX,SpawnY,SpawnZ,SpawnRot,Color1,Color2,(30*60)); // respawn 30 minutes
|
||||
vehicles_loaded++;
|
||||
}
|
||||
|
||||
fclose(file_ptr);
|
||||
printf("Loaded %d vehicles from: %s",vehicles_loaded,filename);
|
||||
return vehicles_loaded;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------
|
||||
|
||||
stock strtok(const string[], &index)
|
||||
{
|
||||
new length = strlen(string);
|
||||
while ((index < length) && (string[index] <= ' '))
|
||||
{
|
||||
index++;
|
||||
}
|
||||
|
||||
new offset = index;
|
||||
new result[20];
|
||||
while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
|
||||
{
|
||||
result[index - offset] = string[index];
|
||||
index++;
|
||||
}
|
||||
result[index - offset] = EOS;
|
||||
return result;
|
||||
}
|
||||
|
||||
//------------------------------------------------
|
||||
|
||||
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] = string[start_index];
|
||||
x++;
|
||||
start_index++;
|
||||
}
|
||||
return_str[x] = EOS;
|
||||
if(string[start_index] == EOS) start_index = (-1);
|
||||
return start_index;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------
|
||||
|
||||
stock isNumeric(const string[])
|
||||
{
|
||||
new length=strlen(string);
|
||||
if (length==0) return false;
|
||||
for (new i = 0; i < length; i++)
|
||||
{
|
||||
if (
|
||||
(string[i] > '9' || string[i] < '0' && string[i]!='-' && string[i]!='+') // Not a number,'+' or '-'
|
||||
|| (string[i]=='-' && i!=0) // A '-' but not at first.
|
||||
|| (string[i]=='+' && i!=0) // A '+' but not at first.
|
||||
) return false;
|
||||
}
|
||||
if (length==1 && (string[0]=='-' || string[0]=='+')) return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------
|
||||
|
||||
stock IsKeyJustDown(key, newkeys, oldkeys)
|
||||
{
|
||||
if((newkeys & key) && !(oldkeys & key)) return 1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------
|
||||
Reference in New Issue
Block a user