Help! My alarm crashes the game!
Moderator: Moderators
alarms
ok did as ya suggested and still no work,,,heres what the console is saying
if($player[local.1].alarmprep != 1) (global/alarmer_mp.scr, 65)
if($player[local^
^~^~^ Script file compile error: Couldn't parse 'global/alarmer_mp.scr'
ScriptMaster::GetScript: Script 'global//alarmer_mp.scr' was not properly loaded
ok when i walked over to a alarm and hit the e key to activate it i got the following error in console,,which tells me at least its trying to work hehehehe
thread global/alarmer_MP.scr::alarm_player_reset (maps/m6l2a.scr, 279)
^
^~^~^ Script Error: Script 'global/alarmer_MP.scr' was not properly loaded
thread global/alarmer_MP.scr::alarm_player_reset (maps/m6l2a.scr, 279)
^
^~^~^ Script Error: Script 'global/alarmer_MP.scr' was not properly loaded
which that got me excited believe it or not,,lol,,,man i would really have got excited if alarm would have soundecd off
ok just to make sure i have the alarm script correct now,,i will post it once more
main:
level.alarm_always_on = 0
level.alarm_always_on_base = 14
level.alarm_always_on_random = 7
level.alarm_time = 0
level.alarm_time_base = 14
level.alarm_time_random = 5
for (local.i=1;local.i<$alarm.size+1;local.i++)
$alarm[local.i] notsolid
level waittill prespawn
for(local.i=1;local.i< $alarmspawner.size+1;local.i++)
{
local.ent = waitthread global/spawner.scr::spawner_create $alarmspawner[local.i]
local.ent.targetname = "alarmspawned"
}
level waittill spawn
thread alarmprep_MP
//thread alarmgenner
//$player.alarmoff = level.time + 1
//thread alarmer
/*
$endgate_left time 1
$endgate_right time 1
$endgate_right rotateyup 80
$endgate_right move
$endgate_left rotateydown 100
$endgate_left waitmove
$endgate_left connect_paths
$endgate_right connect_paths
*/
end
alarmprep_MP:
while(1)
{
for(local.i=1;local.i <= $player.size;local.i++)
{
if($player[local.1].alarmprep != 1)
{
$player[local.1].alarmprep = 1
thread alarmgenner $player[local.1]
$player[local.i].alarmoff = level.time + 1
thread alarmer $player[local.1]
}
}
//*********************************************
// add this to the script
//*********************************************
waitframe
//**********************************************
// before the last } bracket
//**********************************************
}
end
doalarm local.player:
level.alarmers++
println "doing alarm"
local.range = 5000
local.alarm = -1
println ("Enemy " + (vector_length (self.origin - local.player.origin)) + " distance away is doing alarm and is in thinkstate " + self.thinkstate)
for (local.i=1;local.i<$alarm.size+1;local.i++)
{
local.temprange = vector_length (self.origin - $alarm[local.i].origin)
if ((local.temprange < local.range) && (vector_length (local.player.origin - $alarm[local.i].origin) > local.temprange))
{
local.range = local.temprange
local.alarm = local.i
}
}
if (local.alarm != -1)
{
local.break = 0
local.timer = level.time + 12
thread de-alarmer
local.org = angles_toforward ($alarm[local.alarm].angles)
// local.org = ((local.org * 30) + ($alarm[local.alarm].origin)) + ( 0 0 -25 )
local.org = ((local.org * 35) + ($alarm[local.alarm].origin)) + ( 0 0 -30 )
local.ent = spawn script_origin
local.ent.origin = local.org
local.ent droptofloor
local.org = local.ent.origin
local.ent delete
wait (randomfloat(2.3))
self exec global/disable_ai.scr
// self type_attack "alarm"
// local.ent = spawn script_origin
// local.ent.origin = local.org
// self alarmnode local.ent
// self alarmthread "alarmreg"
// println "should be running for alarm"
// waitframe
self.movedoneradius = 15
while ((isalive self) && (local.break == 0) && (level.time < local.timer))
{
self runto local.org
self waittill movedone
if (level.alarm_on == 0)
{
if (vector_length (self.origin - $alarm[local.alarm].origin) < 90)
{
self.turndoneerror = 10
self turnto $alarm[local.alarm]
self waittill turndone
self anim alarm_switchon
self playsound alarm_switch
local.break = 1
wait 0.2
for (local.i=1;local.i<$alarm.size+1;local.i++)
$alarm[local.i] anim turnon
wait 0.5
level.alarm_on = 1
}
}
else
local.break = 1
wait 1
}
}
else
level.alarmers--
if (isalive self)
self exec global/enable_ai.scr
end
de-alarmer:
wait 12
level.alarmers--
end
alarmreg:
end
/*
alarmreg local.player:
// self runto local.org // $alarm[local.alarm]
self waittill movedone
if (parm.movefail == 1)
{
local.break = 1
level.alarmers--
self.targetname = "enemy_noalarm"
local.oldalarm = $alarm[local.alarm]
local.oldalarm.targetname = "alarm_noalarm"
wait 5
self runto local.player
self.targetname = "enemy"
local.oldalarm.targetname = "alarm"
end
}
else
wait 1
}
}
self exec global/enable_ai.scr
end
*/
alarm_player_reset:
local.player=parm.other
if (level.time > local.player.alarmoff)
{
local.player.alarmoff = level.time + 1
if (level.alarm_on == 1)
{
level.alarm_on = 0
for (local.i=1;local.i<$alarm.size+1;local.i++)
$alarm[local.i] anim turnoff
self playsound alarm_switch
if (level.alarm_time - level.time < 5)
level.alarm_time = level.time + (level.alarm_time_base + randomint(alarm_time_random))
wait 0.5
// for (local.i=1;local.i<$alarm.size+1;local.i++)
// $alarm[local.i] stoploopsound
level.alarm_sound stoploopsound
if (level.alarm_always_on == 1)
wait (level.alarm_always_on_base + randomint(level.alarm_always_on_random))
if (level.alarm_always_on == 1)
{
if (level.alarm_on == 0)
{
level.alarm_on = 1
for (local.i=1;local.i<$alarm.size+1;local.i++)
$alarm[local.i] anim turnon
self playsound alarm_switch
wait 0.5
// for (local.i=1;local.i<$alarm.size+1;local.i++)
// $alarm[local.i] loopsound alarmbell
}
}
}
else
{
level.alarm_on = 1
for (local.i=1;local.i<$alarm.size+1;local.i++)
$alarm[local.i] anim turnon
self playsound alarm_switch
wait 0.5
// for (local.i=1;local.i<$alarm.size+1;local.i++)
// $alarm[local.i] loopsound alarmbell
}
}
// local.alarmbell thread global/loopsound.scr::main alarmbell // Ring the alarm bell
end
turn_alarm_on:
if (level.alarm_on == 0)
{
level.alarm_on = 1
for (local.i=1;local.i<$alarm.size+1;local.i++)
$alarm[local.i] anim turnon
self playsound alarm_switch
wait 0.5
// for (local.i=1;local.i<$alarm.size+1;local.i++)
// $alarm[local.i] loopsound alarmbell
}
end
alarmsounder local.player:
level.alarm_sound = spawn script_model
// level.alarm_sound thread playersoundorg
level.alarm_sound model "fx/dummy.tik"
level.alarm_sound notsolid
while (1)
{
if (level.alarm_on == 1)
{
local.range = 1400
for (local.i=1;local.i<$alarm.size+1;local.i++)
{
local.newrange = vector_length ( local.player.origin - $alarm[local.i].origin)
if (local.newrange < local.range)
{
// $alarm[local.i] loopsound alarmbell
local.range = local.newrange
}
// waitframe
}
/*
1400 50 1400
0.2 1.5 0.2
1.7 0.2 1.7
1.5
*/
local.vol = (1.5 / 1350) * (local.range)
local.vol = 1.5 - local.vol
if (local.vol < 0.2)
local.vol = 0.2
else
if (local.vol > 1.5)
local.vol = 1.5
// println ("range is " + local.range + " and vol is " + local.vol)
level.alarm_sound loopsound alarmbell local.vol "levelwide"
}
waitframe
}
end
alarmgenner local.player:
if (level.alarm_nosound == NIL)
thread alarmsounder
local.timer = level.time
while (((local.player.dmteam == "axis")||(local.player.dmteam == "allies")) && (isalive local.player ))
{
if (level.alarm_on == 1)
{
if (level.time > local.timer)
{
//local.key = getboundkey1 "+use"
//iprintlnbold_noloc (loc_convert_string "Approach alarms and press the USE key ( ") local.key (loc_convert_string " ) to toggle them off or on.")
local.timer = level.time + 12
}
while (level.totalspawnies < 2)
{
waitthread create_alarmguy local.player
wait randomint (3)
}
}
else
local.timer = level.time + 45
wait 1
}
self.alarmprep = 0
end
create_alarmguy local.player:
local.range = 5000
local.entnum = -1
local.num = 0
// local.spawner = -1
for (local.i=1;local.i<$alarmspawned.size+1;local.i++)
{
if !(sighttrace (local.player.origin + (0 0 50)) ($alarmspawned[local.i].origin + (0 0 50)) 1)
{
local.num++
local.spawner[local.num] = $alarmspawned[local.i]
println ("prepped a spawner at " + local.spawner[local.num].origin + " with num " + local.num)
}
wait 0.1
}
if (local.spawner == NIL)
end
local.lastnum = -1
for (local.i=1;local.i<local.num+1;local.i++)
{
local.temprange = vector_length (local.player.origin - local.spawner[local.i].origin)
println ("checking local spawner " + local.i + " and local num is " + local.num + " at range " + local.temprange)
if (local.temprange < local.range)
{
local.range = local.temprange
local.lastnum = local.entnum
local.entnum = local.i
}
}
if (local.lastnum != -1)
local.entnum = local.lastnum
if (local.entnum != -1)
{
local.ent = waitthread global/spawner.scr::spawner_activate local.spawner[local.entnum]
local.ent.targetname = "alarm_spawned_guy"
local.ent thread spawnerthink local.player
}
else
{
println "-------------------"
println local.range
println local.lastnum
println local.entnum
println "-------------------"
}
end
runcheck:
if (level.runcheck)
level.runcheck delete
level.runcheck = local
while (isalive self)
{
if (getcvar(debug) == "1")
println ("A spawned guy is at " + self.origin + " with thinkstate " + self.thinkstate)
wait 1
}
end
spawnerthink local.player:
if (game.skill == "hard")
if (randomint(100) > 60)
self item items/item_25_healthbox.tik 25
self ammo_grenade (randomint(4) + 1)
self mindist 128
self leash 8000
self maxdist 400
self fixedleash 0
self.movedoneradius = 450
wait randomfloat(3)
level.totalspawnies++
thread baddeath
self.nosurprise = 1
local.origin = self.origin
self thread level.script::alarmer local.player
self forceactivate
wait 1
if (self.thinkstate == "idle")
{
println ("spawned guy is running to the player from " + self.origin)
self thread runcheck
self runto local.player
self waittill movedone
self attackplayer
// println ("movefail is " + parm.movefail)
if ((parm.movefail == 1) && !(sighttrace (local.player.origin + (0 0 50)) (self.origin + (0 0 50)) 1) && (vector_length (self.origin - local.origin) < 100))
self damage $world 15000 $world (0 0 0) (0 0 0) (0 0 0) 0 9 0 0
}
while (isalive self)
{
println ("spawned guy is running to the player from " + self.origin)
self runto local.player
self waittill movedone
self attackplayer
wait 2
}
end
baddeath:
self waittill death
println "I die!"
level.totalspawnies--
end
debugprint:
while (1)
{
println ("alarmers = " + level.alarmers + " baddies " + level.totalspawnies)
wait 1
}
end
alarmer local.player:
level.alarmers = 0
level.totalspawnies = 0
level.alarm_on = 0
if (getcvar(skill) == "0")
local.alarmcount = 0
else
local.alarmcount = 1
if (getcvar(debug) == "1")
thread debugprint
while (1)
{
while ((level.alarmers > local.alarmcount) || (level.alarm_on == 1) || (level.time < level.alarm_time))
wait 1
wait randomfloat(2)
local.ent = -1
local.lastent = -1
local.range = 1500
for (local.i=1;local.i<$enemy.size+1;local.i++)
{
if ((isalive $enemy[local.i]) && ($enemy[local.i].thinkstate != "idle")) // ($enemy[local.i] cansee $player))
{
local.newrange = vector_length ($enemy[local.i].origin - local.player.origin)
if (local.newrange < local.range)
{
local.range = local.newrange
local.ent = local.i
/*
if (local.lastent == -1)
{
local.ent = local.lastent
local.lastent = local.i
}
else
{
local.lastent = local.i
local.ent = local.i
}
*/
}
}
// else
// println ("thinkstate is " + $enemy[local.i].thinkstate)
}
if (local.ent != -1)
{
if (game.skill == "hard")
$enemy[local.ent] thread doalarm local.player
else
if (sighttrace ($enemy[local.ent].origin + (0 0 50)) (local.player + (0 0 50)) 1)
$enemy[local.ent] thread doalarm local.player
}
/*
else
if (local.lastent != -1)
if (level.enemy[local.lastent] cansee local.player)
level.enemy[local.lastent] thread bridgeblownow (randomint(3))
*/
wait 2
}
end
if($player[local.1].alarmprep != 1) (global/alarmer_mp.scr, 65)
if($player[local^
^~^~^ Script file compile error: Couldn't parse 'global/alarmer_mp.scr'
ScriptMaster::GetScript: Script 'global//alarmer_mp.scr' was not properly loaded
ok when i walked over to a alarm and hit the e key to activate it i got the following error in console,,which tells me at least its trying to work hehehehe
thread global/alarmer_MP.scr::alarm_player_reset (maps/m6l2a.scr, 279)
^
^~^~^ Script Error: Script 'global/alarmer_MP.scr' was not properly loaded
thread global/alarmer_MP.scr::alarm_player_reset (maps/m6l2a.scr, 279)
^
^~^~^ Script Error: Script 'global/alarmer_MP.scr' was not properly loaded
which that got me excited believe it or not,,lol,,,man i would really have got excited if alarm would have soundecd off
ok just to make sure i have the alarm script correct now,,i will post it once more
main:
level.alarm_always_on = 0
level.alarm_always_on_base = 14
level.alarm_always_on_random = 7
level.alarm_time = 0
level.alarm_time_base = 14
level.alarm_time_random = 5
for (local.i=1;local.i<$alarm.size+1;local.i++)
$alarm[local.i] notsolid
level waittill prespawn
for(local.i=1;local.i< $alarmspawner.size+1;local.i++)
{
local.ent = waitthread global/spawner.scr::spawner_create $alarmspawner[local.i]
local.ent.targetname = "alarmspawned"
}
level waittill spawn
thread alarmprep_MP
//thread alarmgenner
//$player.alarmoff = level.time + 1
//thread alarmer
/*
$endgate_left time 1
$endgate_right time 1
$endgate_right rotateyup 80
$endgate_right move
$endgate_left rotateydown 100
$endgate_left waitmove
$endgate_left connect_paths
$endgate_right connect_paths
*/
end
alarmprep_MP:
while(1)
{
for(local.i=1;local.i <= $player.size;local.i++)
{
if($player[local.1].alarmprep != 1)
{
$player[local.1].alarmprep = 1
thread alarmgenner $player[local.1]
$player[local.i].alarmoff = level.time + 1
thread alarmer $player[local.1]
}
}
//*********************************************
// add this to the script
//*********************************************
waitframe
//**********************************************
// before the last } bracket
//**********************************************
}
end
doalarm local.player:
level.alarmers++
println "doing alarm"
local.range = 5000
local.alarm = -1
println ("Enemy " + (vector_length (self.origin - local.player.origin)) + " distance away is doing alarm and is in thinkstate " + self.thinkstate)
for (local.i=1;local.i<$alarm.size+1;local.i++)
{
local.temprange = vector_length (self.origin - $alarm[local.i].origin)
if ((local.temprange < local.range) && (vector_length (local.player.origin - $alarm[local.i].origin) > local.temprange))
{
local.range = local.temprange
local.alarm = local.i
}
}
if (local.alarm != -1)
{
local.break = 0
local.timer = level.time + 12
thread de-alarmer
local.org = angles_toforward ($alarm[local.alarm].angles)
// local.org = ((local.org * 30) + ($alarm[local.alarm].origin)) + ( 0 0 -25 )
local.org = ((local.org * 35) + ($alarm[local.alarm].origin)) + ( 0 0 -30 )
local.ent = spawn script_origin
local.ent.origin = local.org
local.ent droptofloor
local.org = local.ent.origin
local.ent delete
wait (randomfloat(2.3))
self exec global/disable_ai.scr
// self type_attack "alarm"
// local.ent = spawn script_origin
// local.ent.origin = local.org
// self alarmnode local.ent
// self alarmthread "alarmreg"
// println "should be running for alarm"
// waitframe
self.movedoneradius = 15
while ((isalive self) && (local.break == 0) && (level.time < local.timer))
{
self runto local.org
self waittill movedone
if (level.alarm_on == 0)
{
if (vector_length (self.origin - $alarm[local.alarm].origin) < 90)
{
self.turndoneerror = 10
self turnto $alarm[local.alarm]
self waittill turndone
self anim alarm_switchon
self playsound alarm_switch
local.break = 1
wait 0.2
for (local.i=1;local.i<$alarm.size+1;local.i++)
$alarm[local.i] anim turnon
wait 0.5
level.alarm_on = 1
}
}
else
local.break = 1
wait 1
}
}
else
level.alarmers--
if (isalive self)
self exec global/enable_ai.scr
end
de-alarmer:
wait 12
level.alarmers--
end
alarmreg:
end
/*
alarmreg local.player:
// self runto local.org // $alarm[local.alarm]
self waittill movedone
if (parm.movefail == 1)
{
local.break = 1
level.alarmers--
self.targetname = "enemy_noalarm"
local.oldalarm = $alarm[local.alarm]
local.oldalarm.targetname = "alarm_noalarm"
wait 5
self runto local.player
self.targetname = "enemy"
local.oldalarm.targetname = "alarm"
end
}
else
wait 1
}
}
self exec global/enable_ai.scr
end
*/
alarm_player_reset:
local.player=parm.other
if (level.time > local.player.alarmoff)
{
local.player.alarmoff = level.time + 1
if (level.alarm_on == 1)
{
level.alarm_on = 0
for (local.i=1;local.i<$alarm.size+1;local.i++)
$alarm[local.i] anim turnoff
self playsound alarm_switch
if (level.alarm_time - level.time < 5)
level.alarm_time = level.time + (level.alarm_time_base + randomint(alarm_time_random))
wait 0.5
// for (local.i=1;local.i<$alarm.size+1;local.i++)
// $alarm[local.i] stoploopsound
level.alarm_sound stoploopsound
if (level.alarm_always_on == 1)
wait (level.alarm_always_on_base + randomint(level.alarm_always_on_random))
if (level.alarm_always_on == 1)
{
if (level.alarm_on == 0)
{
level.alarm_on = 1
for (local.i=1;local.i<$alarm.size+1;local.i++)
$alarm[local.i] anim turnon
self playsound alarm_switch
wait 0.5
// for (local.i=1;local.i<$alarm.size+1;local.i++)
// $alarm[local.i] loopsound alarmbell
}
}
}
else
{
level.alarm_on = 1
for (local.i=1;local.i<$alarm.size+1;local.i++)
$alarm[local.i] anim turnon
self playsound alarm_switch
wait 0.5
// for (local.i=1;local.i<$alarm.size+1;local.i++)
// $alarm[local.i] loopsound alarmbell
}
}
// local.alarmbell thread global/loopsound.scr::main alarmbell // Ring the alarm bell
end
turn_alarm_on:
if (level.alarm_on == 0)
{
level.alarm_on = 1
for (local.i=1;local.i<$alarm.size+1;local.i++)
$alarm[local.i] anim turnon
self playsound alarm_switch
wait 0.5
// for (local.i=1;local.i<$alarm.size+1;local.i++)
// $alarm[local.i] loopsound alarmbell
}
end
alarmsounder local.player:
level.alarm_sound = spawn script_model
// level.alarm_sound thread playersoundorg
level.alarm_sound model "fx/dummy.tik"
level.alarm_sound notsolid
while (1)
{
if (level.alarm_on == 1)
{
local.range = 1400
for (local.i=1;local.i<$alarm.size+1;local.i++)
{
local.newrange = vector_length ( local.player.origin - $alarm[local.i].origin)
if (local.newrange < local.range)
{
// $alarm[local.i] loopsound alarmbell
local.range = local.newrange
}
// waitframe
}
/*
1400 50 1400
0.2 1.5 0.2
1.7 0.2 1.7
1.5
*/
local.vol = (1.5 / 1350) * (local.range)
local.vol = 1.5 - local.vol
if (local.vol < 0.2)
local.vol = 0.2
else
if (local.vol > 1.5)
local.vol = 1.5
// println ("range is " + local.range + " and vol is " + local.vol)
level.alarm_sound loopsound alarmbell local.vol "levelwide"
}
waitframe
}
end
alarmgenner local.player:
if (level.alarm_nosound == NIL)
thread alarmsounder
local.timer = level.time
while (((local.player.dmteam == "axis")||(local.player.dmteam == "allies")) && (isalive local.player ))
{
if (level.alarm_on == 1)
{
if (level.time > local.timer)
{
//local.key = getboundkey1 "+use"
//iprintlnbold_noloc (loc_convert_string "Approach alarms and press the USE key ( ") local.key (loc_convert_string " ) to toggle them off or on.")
local.timer = level.time + 12
}
while (level.totalspawnies < 2)
{
waitthread create_alarmguy local.player
wait randomint (3)
}
}
else
local.timer = level.time + 45
wait 1
}
self.alarmprep = 0
end
create_alarmguy local.player:
local.range = 5000
local.entnum = -1
local.num = 0
// local.spawner = -1
for (local.i=1;local.i<$alarmspawned.size+1;local.i++)
{
if !(sighttrace (local.player.origin + (0 0 50)) ($alarmspawned[local.i].origin + (0 0 50)) 1)
{
local.num++
local.spawner[local.num] = $alarmspawned[local.i]
println ("prepped a spawner at " + local.spawner[local.num].origin + " with num " + local.num)
}
wait 0.1
}
if (local.spawner == NIL)
end
local.lastnum = -1
for (local.i=1;local.i<local.num+1;local.i++)
{
local.temprange = vector_length (local.player.origin - local.spawner[local.i].origin)
println ("checking local spawner " + local.i + " and local num is " + local.num + " at range " + local.temprange)
if (local.temprange < local.range)
{
local.range = local.temprange
local.lastnum = local.entnum
local.entnum = local.i
}
}
if (local.lastnum != -1)
local.entnum = local.lastnum
if (local.entnum != -1)
{
local.ent = waitthread global/spawner.scr::spawner_activate local.spawner[local.entnum]
local.ent.targetname = "alarm_spawned_guy"
local.ent thread spawnerthink local.player
}
else
{
println "-------------------"
println local.range
println local.lastnum
println local.entnum
println "-------------------"
}
end
runcheck:
if (level.runcheck)
level.runcheck delete
level.runcheck = local
while (isalive self)
{
if (getcvar(debug) == "1")
println ("A spawned guy is at " + self.origin + " with thinkstate " + self.thinkstate)
wait 1
}
end
spawnerthink local.player:
if (game.skill == "hard")
if (randomint(100) > 60)
self item items/item_25_healthbox.tik 25
self ammo_grenade (randomint(4) + 1)
self mindist 128
self leash 8000
self maxdist 400
self fixedleash 0
self.movedoneradius = 450
wait randomfloat(3)
level.totalspawnies++
thread baddeath
self.nosurprise = 1
local.origin = self.origin
self thread level.script::alarmer local.player
self forceactivate
wait 1
if (self.thinkstate == "idle")
{
println ("spawned guy is running to the player from " + self.origin)
self thread runcheck
self runto local.player
self waittill movedone
self attackplayer
// println ("movefail is " + parm.movefail)
if ((parm.movefail == 1) && !(sighttrace (local.player.origin + (0 0 50)) (self.origin + (0 0 50)) 1) && (vector_length (self.origin - local.origin) < 100))
self damage $world 15000 $world (0 0 0) (0 0 0) (0 0 0) 0 9 0 0
}
while (isalive self)
{
println ("spawned guy is running to the player from " + self.origin)
self runto local.player
self waittill movedone
self attackplayer
wait 2
}
end
baddeath:
self waittill death
println "I die!"
level.totalspawnies--
end
debugprint:
while (1)
{
println ("alarmers = " + level.alarmers + " baddies " + level.totalspawnies)
wait 1
}
end
alarmer local.player:
level.alarmers = 0
level.totalspawnies = 0
level.alarm_on = 0
if (getcvar(skill) == "0")
local.alarmcount = 0
else
local.alarmcount = 1
if (getcvar(debug) == "1")
thread debugprint
while (1)
{
while ((level.alarmers > local.alarmcount) || (level.alarm_on == 1) || (level.time < level.alarm_time))
wait 1
wait randomfloat(2)
local.ent = -1
local.lastent = -1
local.range = 1500
for (local.i=1;local.i<$enemy.size+1;local.i++)
{
if ((isalive $enemy[local.i]) && ($enemy[local.i].thinkstate != "idle")) // ($enemy[local.i] cansee $player))
{
local.newrange = vector_length ($enemy[local.i].origin - local.player.origin)
if (local.newrange < local.range)
{
local.range = local.newrange
local.ent = local.i
/*
if (local.lastent == -1)
{
local.ent = local.lastent
local.lastent = local.i
}
else
{
local.lastent = local.i
local.ent = local.i
}
*/
}
}
// else
// println ("thinkstate is " + $enemy[local.i].thinkstate)
}
if (local.ent != -1)
{
if (game.skill == "hard")
$enemy[local.ent] thread doalarm local.player
else
if (sighttrace ($enemy[local.ent].origin + (0 0 50)) (local.player + (0 0 50)) 1)
$enemy[local.ent] thread doalarm local.player
}
/*
else
if (local.lastent != -1)
if (level.enemy[local.lastent] cansee local.player)
level.enemy[local.lastent] thread bridgeblownow (randomint(3))
*/
wait 2
}
end
alarms
ok i went back and used the original script and bsp just to make sure wasnt my script ,,,,also the only way i can see these msg is to have the exe set to +set developer 1 ,,if i set it to +set developer 0 i see no errors in the console,,,dont know if that makes any difference but thought i would tell ya anyways,,,ok with original bsp and script ,,original bsp meaning it loads all the ai,,i have other bsp files for all m maps that load no ai soldiers..ok with original bsp and script with the exception of using your alarm.scr i get the following,,
if (((self.current_target.origin - self.origin) * self.leftvector) >= 0) (global/mg42_active.scr, 435)
if (((self.current_target^
^~^~^ Script Error: Field 'origin' applied to NULL listener
^~^~^ Path not found in 'Actor::MoveToPatrolCurrentNode' for (entnum 199, radnum 197, targetname 'alarm2_officer_patroller') from (-3108.284180 -2693.692383 8.125000) to (-3168.000000 -2704.000000 8.125000)
Reason: couldn't find end node
ok once again when i hit the e key to make alarm sound
thread global/alarmer_MP.scr::alarm_player_reset (maps/m6l2a.scr, 168)
^
^~^~^ Script Error: Script 'global/alarmer_MP.scr' was not properly loaded
hope all this helps because im lost to what it all means lol
Gold<<mohha freak
if (((self.current_target.origin - self.origin) * self.leftvector) >= 0) (global/mg42_active.scr, 435)
if (((self.current_target^
^~^~^ Script Error: Field 'origin' applied to NULL listener
^~^~^ Path not found in 'Actor::MoveToPatrolCurrentNode' for (entnum 199, radnum 197, targetname 'alarm2_officer_patroller') from (-3108.284180 -2693.692383 8.125000) to (-3168.000000 -2704.000000 8.125000)
Reason: couldn't find end node
ok once again when i hit the e key to make alarm sound
thread global/alarmer_MP.scr::alarm_player_reset (maps/m6l2a.scr, 168)
^
^~^~^ Script Error: Script 'global/alarmer_MP.scr' was not properly loaded
hope all this helps because im lost to what it all means lol
Gold<<mohha freak
alarms
ok i know im posting alot on this but i kinda think the more i post the more it may help to figure out why it doesnt work lol,,,ok loaded the original alarm scr and only changed the 1st thing ya told me 2 change,,,with this configuration,,ai sets alarm off,,then when i try to turn alarm off i get this msg
if (level.time > $player.alarmoff) (global/alarmer.scr, 186)
if (level.time ^
^~^~^ Script Error: binary '>' applied to incompatible types 'float' and 'NIL'
if (level.time > $player.alarmoff) (global/alarmer.scr, 186)
if (level.time ^
^~^~^ Script Error: binary '>' applied to incompatible types 'float' and 'NIL'
alarms
ugggg everything seems to work fine but when i took it online it crashed the server with this error ERROR: Level::AllocEdict: no free edicts,,,this only happens when other players have entered the server,,,also another thing that seems to come along with this is ya have to restart the server sometimes because ya cant cut the alarm,,,once ya restart the alarm works fine once more for awile,,,but then like 8 minutes or so into play it crashes the server with the above error,,,the error was hard to catch because when it crashes most the time it just freezes spearhead,,,the one time it didnt freeze the error was caught,,,any futher help on a fix i would appreciate greatly,,,because the guys playing seem to love the working alarms lol
Gold<<mohha freak
Gold<<mohha freak
alarms
ok maybe this will futher help ,,i set developer back to 1 ,,and went back into game,,,ok everything was fine ,,,now when i tripped the alram,,alarm sounded and then my fps dropped rapidly ,,,i then after quickly cutting the alarm back off checked the console and seen this,,,
local.newrange = vector_length ( local.player.origin - $alarm[local.i].origin) (global/alarmer_mp.scr, 313)
local.newrange = vector_length ( local.player^
^~^~^ Script Error: Cannot cast 'NIL' to listener
local.newrange = vector_length ( local.player.origin - $alarm[local.i].origin) (global/alarmer_mp.scr, 313)
local.newrange = vector_length ( local.player.origin ^
^~^~^ Script Error: binary '-' applied to incompatible types 'NIL' and 'vector'
local.newrange = vector_length ( local.player.origin - $alarm[local.i].origin) (global/alarmer_mp.scr, 313)
local.newrange = ^
^~^~^ Script Error: Cannot cast 'NIL' to vector
if (local.newrange < local.range) (global/alarmer_mp.scr, 314)
if (local.newrange ^
^~^~^ Script Error: binary '<' applied to incompatible types 'NIL' and 'int'
local.newrange = vector_length ( local.player.origin - $alarm[local.i].origin) (global/alarmer_mp.scr, 313)
local.newrange = vector_length ( local.player^
^~^~^ Script Error: Cannot cast 'NIL' to listener
local.newrange = vector_length ( local.player.origin - $alarm[local.i].origin) (global/alarmer_mp.scr, 313)
local.newrange = vector_length ( local.player.origin ^
^~^~^ Script Error: binary '-' applied to incompatible types 'NIL' and 'vector'
local.newrange = vector_length ( local.player.origin - $alarm[local.i].origin) (global/alarmer_mp.scr, 313)
local.newrange = ^
^~^~^ Script Error: Cannot cast 'NIL' to vector
if (local.newrange < local.range) (global/alarmer_mp.scr, 314)
if (local.newrange ^
^~^~^ Script Error: binary '<' applied to incompatible types 'NIL' and 'int'
local.newrange = vector_length ( local.player.origin - $alarm[local.i].origin) (global/alarmer_mp.scr, 313)
local.newrange = vector_length ( local.player^
^~^~^ Script Error: Cannot cast 'NIL' to listener
local.newrange = vector_length ( local.player.origin - $alarm[local.i].origin) (global/alarmer_mp.scr, 313)
local.newrange = vector_length ( local.player.origin ^
^~^~^ Script Error: binary '-' applied to incompatible types 'NIL' and 'vector'
local.newrange = vector_length ( local.player.origin - $alarm[local.i].origin) (global/alarmer_mp.scr, 313)
local.newrange = ^
^~^~^ Script Error: Cannot cast 'NIL' to vector
if (local.newrange < local.range) (global/alarmer_mp.scr, 314)
if (local.newrange ^
^~^~^ Script Error: binary '<' applied to incompatible types 'NIL' and 'int'
local.newrange = vector_length ( local.player.origin - $alarm[local.i].origin) (global/alarmer_mp.scr, 313)
local.newrange = vector_length ( local.player^
^~^~^ Script Error: Cannot cast 'NIL' to listener
local.newrange = vector_length ( local.player.origin - $alarm[local.i].origin) (global/alarmer_mp.scr, 313)
local.newrange = vector_length ( local.player.origin ^
^~^~^ Script Error: binary '-' applied to incompatible types 'NIL' and 'vector'
local.newrange = vector_length ( local.player.origin - $alarm[local.i].origin) (global/alarmer_mp.scr, 313)
local.newrange = ^
^~^~^ Script Error: Cannot cast 'NIL' to vector
if (local.newrange < local.range) (global/alarmer_mp.scr, 314)
if (local.newrange ^
^~^~^ Script Error: binary '<' applied to incompatible types 'NIL' and 'int'
local.newrange = vector_length ( local.player.origin - $alarm[local.i].origin) (global/alarmer_mp.scr, 313)
local.newrange = vector_length ( local.player^
^~^~^ Script Error: Cannot cast 'NIL' to listener
local.newrange = vector_length ( local.player.origin - $alarm[local.i].origin) (global/alarmer_mp.scr, 313)
local.newrange = vector_length ( local.player.origin ^
^~^~^ Script Error: binary '-' applied to incompatible types 'NIL' and 'vector'
local.newrange = vector_length ( local.player.origin - $alarm[local.i].origin) (global/alarmer_mp.scr, 313)
local.newrange = ^
^~^~^ Script Error: Cannot cast 'NIL' to vector
if (local.newrange < local.range) (global/alarmer_mp.scr, 314)
if (local.newrange ^
^~^~^ Script Error: binary '<' applied to incompatible types 'NIL' and 'int'
local.newrange = vector_length ( local.player.origin - $alarm[local.i].origin) (global/alarmer_mp.scr, 313)
local.newrange = vector_length ( local.player^
^~^~^ Script Error: Cannot cast 'NIL' to listener
local.newrange = vector_length ( local.player.origin - $alarm[local.i].origin) (global/alarmer_mp.scr, 313)
local.newrange = vector_length ( local.player.origin ^
^~^~^ Script Error: binary '-' applied to incompatible types 'NIL' and 'vector'
local.newrange = vector_length ( local.player.origin - $alarm[local.i].origin) (global/alarmer_mp.scr, 313)
local.newrange = ^
^~^~^ Script Error: Cannot cast 'NIL' to vector
if (local.newrange < local.range) (global/alarmer_mp.scr, 314)
if (local.newrange ^
^~^~^ Script Error: binary '<' applied to incompatible types 'NIL' and 'int'
local.newrange = vector_length ( local.player.origin - $alarm[local.i].origin) (global/alarmer_mp.scr, 313)
local.newrange = vector_length ( local.player^
^~^~^ Script Error: Cannot cast 'NIL' to listener
local.newrange = vector_length ( local.player.origin - $alarm[local.i].origin) (global/alarmer_mp.scr, 313)
local.newrange = vector_length ( local.player.origin ^
^~^~^ Script Error: binary '-' applied to incompatible types 'NIL' and 'vector'
local.newrange = vector_length ( local.player.origin - $alarm[local.i].origin) (global/alarmer_mp.scr, 313)
local.newrange = ^
^~^~^ Script Error: Cannot cast 'NIL' to vector
if (local.newrange < local.range) (global/alarmer_mp.scr, 314)
if (local.newrange ^
is it possible that these errors are causing the error i stated in post just before this one??? hope this helps:))
Gold<<mohha freak
local.newrange = vector_length ( local.player.origin - $alarm[local.i].origin) (global/alarmer_mp.scr, 313)
local.newrange = vector_length ( local.player^
^~^~^ Script Error: Cannot cast 'NIL' to listener
local.newrange = vector_length ( local.player.origin - $alarm[local.i].origin) (global/alarmer_mp.scr, 313)
local.newrange = vector_length ( local.player.origin ^
^~^~^ Script Error: binary '-' applied to incompatible types 'NIL' and 'vector'
local.newrange = vector_length ( local.player.origin - $alarm[local.i].origin) (global/alarmer_mp.scr, 313)
local.newrange = ^
^~^~^ Script Error: Cannot cast 'NIL' to vector
if (local.newrange < local.range) (global/alarmer_mp.scr, 314)
if (local.newrange ^
^~^~^ Script Error: binary '<' applied to incompatible types 'NIL' and 'int'
local.newrange = vector_length ( local.player.origin - $alarm[local.i].origin) (global/alarmer_mp.scr, 313)
local.newrange = vector_length ( local.player^
^~^~^ Script Error: Cannot cast 'NIL' to listener
local.newrange = vector_length ( local.player.origin - $alarm[local.i].origin) (global/alarmer_mp.scr, 313)
local.newrange = vector_length ( local.player.origin ^
^~^~^ Script Error: binary '-' applied to incompatible types 'NIL' and 'vector'
local.newrange = vector_length ( local.player.origin - $alarm[local.i].origin) (global/alarmer_mp.scr, 313)
local.newrange = ^
^~^~^ Script Error: Cannot cast 'NIL' to vector
if (local.newrange < local.range) (global/alarmer_mp.scr, 314)
if (local.newrange ^
^~^~^ Script Error: binary '<' applied to incompatible types 'NIL' and 'int'
local.newrange = vector_length ( local.player.origin - $alarm[local.i].origin) (global/alarmer_mp.scr, 313)
local.newrange = vector_length ( local.player^
^~^~^ Script Error: Cannot cast 'NIL' to listener
local.newrange = vector_length ( local.player.origin - $alarm[local.i].origin) (global/alarmer_mp.scr, 313)
local.newrange = vector_length ( local.player.origin ^
^~^~^ Script Error: binary '-' applied to incompatible types 'NIL' and 'vector'
local.newrange = vector_length ( local.player.origin - $alarm[local.i].origin) (global/alarmer_mp.scr, 313)
local.newrange = ^
^~^~^ Script Error: Cannot cast 'NIL' to vector
if (local.newrange < local.range) (global/alarmer_mp.scr, 314)
if (local.newrange ^
^~^~^ Script Error: binary '<' applied to incompatible types 'NIL' and 'int'
local.newrange = vector_length ( local.player.origin - $alarm[local.i].origin) (global/alarmer_mp.scr, 313)
local.newrange = vector_length ( local.player^
^~^~^ Script Error: Cannot cast 'NIL' to listener
local.newrange = vector_length ( local.player.origin - $alarm[local.i].origin) (global/alarmer_mp.scr, 313)
local.newrange = vector_length ( local.player.origin ^
^~^~^ Script Error: binary '-' applied to incompatible types 'NIL' and 'vector'
local.newrange = vector_length ( local.player.origin - $alarm[local.i].origin) (global/alarmer_mp.scr, 313)
local.newrange = ^
^~^~^ Script Error: Cannot cast 'NIL' to vector
if (local.newrange < local.range) (global/alarmer_mp.scr, 314)
if (local.newrange ^
^~^~^ Script Error: binary '<' applied to incompatible types 'NIL' and 'int'
local.newrange = vector_length ( local.player.origin - $alarm[local.i].origin) (global/alarmer_mp.scr, 313)
local.newrange = vector_length ( local.player^
^~^~^ Script Error: Cannot cast 'NIL' to listener
local.newrange = vector_length ( local.player.origin - $alarm[local.i].origin) (global/alarmer_mp.scr, 313)
local.newrange = vector_length ( local.player.origin ^
^~^~^ Script Error: binary '-' applied to incompatible types 'NIL' and 'vector'
local.newrange = vector_length ( local.player.origin - $alarm[local.i].origin) (global/alarmer_mp.scr, 313)
local.newrange = ^
^~^~^ Script Error: Cannot cast 'NIL' to vector
if (local.newrange < local.range) (global/alarmer_mp.scr, 314)
if (local.newrange ^
^~^~^ Script Error: binary '<' applied to incompatible types 'NIL' and 'int'
local.newrange = vector_length ( local.player.origin - $alarm[local.i].origin) (global/alarmer_mp.scr, 313)
local.newrange = vector_length ( local.player^
^~^~^ Script Error: Cannot cast 'NIL' to listener
local.newrange = vector_length ( local.player.origin - $alarm[local.i].origin) (global/alarmer_mp.scr, 313)
local.newrange = vector_length ( local.player.origin ^
^~^~^ Script Error: binary '-' applied to incompatible types 'NIL' and 'vector'
local.newrange = vector_length ( local.player.origin - $alarm[local.i].origin) (global/alarmer_mp.scr, 313)
local.newrange = ^
^~^~^ Script Error: Cannot cast 'NIL' to vector
if (local.newrange < local.range) (global/alarmer_mp.scr, 314)
if (local.newrange ^
^~^~^ Script Error: binary '<' applied to incompatible types 'NIL' and 'int'
local.newrange = vector_length ( local.player.origin - $alarm[local.i].origin) (global/alarmer_mp.scr, 313)
local.newrange = vector_length ( local.player^
^~^~^ Script Error: Cannot cast 'NIL' to listener
local.newrange = vector_length ( local.player.origin - $alarm[local.i].origin) (global/alarmer_mp.scr, 313)
local.newrange = vector_length ( local.player.origin ^
^~^~^ Script Error: binary '-' applied to incompatible types 'NIL' and 'vector'
local.newrange = vector_length ( local.player.origin - $alarm[local.i].origin) (global/alarmer_mp.scr, 313)
local.newrange = ^
^~^~^ Script Error: Cannot cast 'NIL' to vector
if (local.newrange < local.range) (global/alarmer_mp.scr, 314)
if (local.newrange ^
is it possible that these errors are causing the error i stated in post just before this one??? hope this helps:))
Gold<<mohha freak
The no free edict error is when too many entities are in the map and the game runs out of space or memory . That error is why I fixed the global/alarmer.scr to begin with it way generating too many script origins because of the sytax difference between mohaaa and spearhead . I am not sure why you are still getting that because the fix worked in single player originally . I looked at the script and don't see anywhere in it that will cause too many entities to be spawned .
As for the error in the alarmer_mp.scr I think I found it .
Add the local.player after the words thread alarmsounder . The problem was that I didn't pass that to the alarmsounder thread . oops
As for the error in the alarmer_mp.scr I think I found it .
Add the local.player after the words thread alarmsounder . The problem was that I didn't pass that to the alarmsounder thread . oops
Code: Select all
alarmgenner local.player:
if (level.alarm_nosound == NIL)
thread alarmsounder local.player
alarms
i think ya about there hehehehe,,,, now the alarm doesnt crash the server anymore:))) theres still a error which i post in just a sec,,,but also wanted to explain to ya whats happening,,if i start the server i can turn alarms off and on ,,works like a charm,,,but when second player enters server if alarm is on at the time and he tries turning it off ,,he cant turn it off,,,at this point neither can i,,,im hoping the following error is related to the above described circumstances,,then ya could kill to birds with one stone,,lol,,,heres error
^~^~^ Script Error: Field 'player' applied to NULL listener
local.newrange = vector_length ($local.player.origin - $alarm[local.i].origin) (global/alarmer_mp.scr, 315)
local.newrange = vector_length ($local.player^
^~^~^ Script Error: Cannot cast 'NIL' to listener
local.newrange = vector_length ($local.player.origin - $alarm[local.i].origin) (global/alarmer_mp.scr, 315)
local.newrange = vector_length ($local.player.origin ^
^~^~^ Script Error: binary '-' applied to incompatible types 'NIL' and 'vector'
local.newrange = vector_length ($local.player.origin - $alarm[local.i].origin) (global/alarmer_mp.scr, 315)
local.newrange = ^
^~^~^ Script Error: Cannot cast 'NIL' to vector
if (local.newrange < local.range) (global/alarmer_mp.scr, 316)
if (local.newrange ^
^~^~^ Script Error: binary '<' applied to incompatible types 'NIL' and 'int'
local.newrange = vector_length ($local.player.origin - $alarm[local.i].origin) (global/alarmer_mp.scr, 315)
local.newrange = vector_length ($local^
^~^~^ Script Error: Field 'player' applied to NULL listener
local.newrange = vector_length ($local.player.origin - $alarm[local.i].origin) (global/alarmer_mp.scr, 315)
local.newrange = vector_length ($local.player^
^~^~^ Script Error: Cannot cast 'NIL' to listener
local.newrange = vector_length ($local.player.origin - $alarm[local.i].origin) (global/alarmer_mp.scr, 315)
local.newrange = vector_length ($local.player.origin ^
^~^~^ Script Error: binary '-' applied to incompatible types 'NIL' and 'vector'
local.newrange = vector_length ($local.player.origin - $alarm[local.i].origin) (global/alarmer_mp.scr, 315)
local.newrange = ^
^~^~^ Script Error: Cannot cast 'NIL' to vector
if (local.newrange < local.range) (global/alarmer_mp.scr, 316)
if (local.newrange ^
^~^~^ Script Error: binary '<' applied to incompatible types 'NIL' and 'int'
local.newrange = vector_length ($local.player.origin - $alarm[local.i].origin) (global/alarmer_mp.scr, 315)
local.newrange = vector_length ($local^
^~^~^ Script Error: Field 'player' applied to NULL listener
thanx once agian for ya patience and expertise with this:))
Gold<<mohha freak
^~^~^ Script Error: Field 'player' applied to NULL listener
local.newrange = vector_length ($local.player.origin - $alarm[local.i].origin) (global/alarmer_mp.scr, 315)
local.newrange = vector_length ($local.player^
^~^~^ Script Error: Cannot cast 'NIL' to listener
local.newrange = vector_length ($local.player.origin - $alarm[local.i].origin) (global/alarmer_mp.scr, 315)
local.newrange = vector_length ($local.player.origin ^
^~^~^ Script Error: binary '-' applied to incompatible types 'NIL' and 'vector'
local.newrange = vector_length ($local.player.origin - $alarm[local.i].origin) (global/alarmer_mp.scr, 315)
local.newrange = ^
^~^~^ Script Error: Cannot cast 'NIL' to vector
if (local.newrange < local.range) (global/alarmer_mp.scr, 316)
if (local.newrange ^
^~^~^ Script Error: binary '<' applied to incompatible types 'NIL' and 'int'
local.newrange = vector_length ($local.player.origin - $alarm[local.i].origin) (global/alarmer_mp.scr, 315)
local.newrange = vector_length ($local^
^~^~^ Script Error: Field 'player' applied to NULL listener
local.newrange = vector_length ($local.player.origin - $alarm[local.i].origin) (global/alarmer_mp.scr, 315)
local.newrange = vector_length ($local.player^
^~^~^ Script Error: Cannot cast 'NIL' to listener
local.newrange = vector_length ($local.player.origin - $alarm[local.i].origin) (global/alarmer_mp.scr, 315)
local.newrange = vector_length ($local.player.origin ^
^~^~^ Script Error: binary '-' applied to incompatible types 'NIL' and 'vector'
local.newrange = vector_length ($local.player.origin - $alarm[local.i].origin) (global/alarmer_mp.scr, 315)
local.newrange = ^
^~^~^ Script Error: Cannot cast 'NIL' to vector
if (local.newrange < local.range) (global/alarmer_mp.scr, 316)
if (local.newrange ^
^~^~^ Script Error: binary '<' applied to incompatible types 'NIL' and 'int'
local.newrange = vector_length ($local.player.origin - $alarm[local.i].origin) (global/alarmer_mp.scr, 315)
local.newrange = vector_length ($local^
^~^~^ Script Error: Field 'player' applied to NULL listener
thanx once agian for ya patience and expertise with this:))
Gold<<mohha freak
alarms
ok let me clarify a earlier statement which may help more,,,when other players enter the server the switch still operates correctly for every player its just the sound stopping doesnt work,,,opppsss ,,should have told ya that earlier,,i sorry lol
Gold<<mohha freak
i could live with the above errors which disappear in devoloper mode 0 and since it isnt causing the server to crash now,,,just wish the sound would stop when every player cuts the switch off hehehehe
Gold<<mohha freak
i could live with the above errors which disappear in devoloper mode 0 and since it isnt causing the server to crash now,,,just wish the sound would stop when every player cuts the switch off hehehehe
alarms
testing it out,,,no console errors yaaaaaaaaa!!!!!!!! I let ya know how it goes,,,,thanx once more for ya desire to help a noob like me,,ya persitence and patience,,,its ppl like ya that makes this forum the best on the net
Gold<<mohha freak
Gold<<mohha freak
alarms
i will do my best to explain this hehehehe,,,if i start server and not cut alarm on,,,second player joins everything works fine ,,to perfection,,was still getting some crashes but once i added the alarm sounds to a tiki serverside and removed them from the ubersound seems to have cleared that up,learned that good advice from the dog info lol,now if alarm is on when second player joins,,,the following syptoms occur,,,at times the alarm will quit working switch and all,,,other times the switch still works but when i cut off alarm i still hear faint alarm sound in the background,,same with other player if he cuts it off still hears faint sound,,if the other player cuts alarm on then leaves server its like the sound goes real faint,,,at that point i cut alarm off ,,still faint sound hehehe,,,,if same player comes back sound goes back to full,,now anytime theres a problem ,,if i pull down console and type,,,restart,,,everything starts working normal once more,,,seems like that the biggest problem is with players connecting or disconnecting when alarm is on,,if alarm is off when players connect once connected everything works normal,hope there is solution hehehehe,,
Gold<<mohha freak
Gold<<mohha freak