Thứ Hai, 10 tháng 4, 2017

Waching daily Apr 10 2017

Letter P song for kids (music video) - english alphabet song for children, beginners

For more infomation >> Letter P song for kids (music video) - english alphabet song for children, beginners - Duration: 2:22.

-------------------------------------------

PEANUT EZREAL IS SH*T[REUPLOAD] - Peanut Stream Highlights TRANSLATED - Duration: 12:46.

Peanut: Wow ..

Peanut: Wow, Smite ... wooooow

Peanut: WOOOOOW

Peanut: She's going AD ... fine then ..

Peanut: Karma's Summoner Spells are .. *internal facepalm*

*lit lit lit*

Peanut: *remembers* I forgot, I need to try on my contacts ... *sigh*

.... there's so many things to do ...

... but not a lot of time

Peanut: No time!

Peanut: I just wanna win the championship already...

Peanut: Time .. with the time that I saw ... but in the end ..

Peanut: If I had luck, I would have more time as well ..

Peanut: If I had luck then more time (???) ..

... that's right :)

Peanut: Even If I do that, I'll die ..

*SKT whale noises*

Peanut: There is ..

Peanut: Oh hey .. (watch out)

*good try*

Peanut: /:

Peanut: *owl noise* ...

.... *into singing*

Profit: .... wouldn't there be too many?

Peanut: This Thresh, he's way too good!

Profit: Yo, I thought you told me you were gonna destroy Lucian?

Peanut: Thresh ... Profit: I didn't see him get destroyed?

Peanut: Hyung. Smite Karma is a bit difficult to work with ..

Peanut: But ... Profit: *LOLS*

Peanut: ...I won the first fight, but died to their Jungler

Profit: I can't go, not with this .. Peanut: It was too difficult ... too hard

Peanut: Registering for it and then doing it was just ...

... just wasn't my style

*Kappa ..

Priiiide*

Profit: Graves did something weird with his ultimate ..

Peanut: Just imagine what how I would do If the Karma had Exhaust instead of Smite .. I would win it all .. Profit: *screams*

Profit: *whimpers*

Profit: ??????

Peanut: Q! There you go .. So Close! Profit: Ahh .. uah .. ah ..

Profit: Really? Peanut: Mm.

Peanut: I think I would've died anyway .. since the dagger would've resetted

Peanut: Profit hyung, hurry! Come and help me at mid

Profit: I did go and try mid earlier but ...

Profit: ... there's no point in going there again Peanut: Clearing waves at Top isn't going to help us win this game hyung! You know this!

Peanut: Clearing waves at Top isn't going to help us win this game hyung! You know this!

... so hurry up and come :)

Peanut: I'll set everything up for you

Peanut: Oh? Ah, hyung ...

*wanted the kill*

Peanut: Hyung! If Gragas is the one to get fed, we won't be able to win ..

*bless you*

Peanut: ... *didn't mean to press* Okay! W! ......

Peanut: Kat! She's going to try to come and all in me..

Profit: Ok, I'm watching, I'm watching ..

... I see it

Profit: I'm watching Peanut: They need to go for you hyung

Peanut: Hyung, can you get away from me? :)

Profit: What, it looks to me like you're dead anyways

... you're gone LOL

Peanut: HYUNG. /: Profit: Ah hah!

Peanut: If you do that, won't you die too then?

*choking chicken?*

Peanut: *reads chat* You're right! Beauty and The Beast was ...

Peanut: Waah ..seriously ..I was watching it and Emma Watson was so ...

.... she was no joke! (she was hot)

Peanut: Get hit by the ult ... aw so close

Profit: What's not a joke? Peanut: Emma Watson

Peanut: Emma Watson! <3

Profit: Emma Wax!

lul

Profit: Yeah I couldn't take my eyes off of her

Profit: Dip, dip, dip!

Profit: She's coming this way (x3)

Peanut: Hyung, you want me to show you my kiting skills?

Profit: Bbaha! Show me >:)

Profit: :O

... :l

Peanut: Ah hyung! If you use Gragas ult like that,

then there's no windows of opportunity!

Peanut: Let's go in, I got Heal!

Profit: Ah! She dodged it.. Peanut: :P .... Triple Kill ...

Profit: She didn't come up to me ...

... I lunged forward, expecting her to come in front of me

Profit: She's better than I thought ..

Peanut: Karma is using her Smite ..

Peanut: Anyone down to save me?? ...

*nope*

Profit: Lee Sin can't move .. xD

Profit: Lee Sin couldn't do anything LOL

Peanut: *from chat* "I miss you man"..- game!

Peanut: And. I can't finish .. and ..

Peanut: finish for me .. ( ͡° ͜ʖ ͡°)

Peanut: I'll be able to carry once I buy Trinity Force and Muramana

Peanut: I'm omw (x4) Gragas tanking it!

Profit: I thought Kat would come and try me from the right

but she came from the left

Peanut: Wow, He landed that? Really ..

Peanut: Wooow, Thresh is a real pro ..

Peanut: He's way too good, yeah?

This match is gonna be my last

Profit: To go to sleep?

Peanut: Yeah

Peanut: I'm tired from going to the skin care center today

Peanut: Really, Smite? .. Oh it wasn't from Karma

Peanut: I'm going to ...

Profit: Is he here?

Peanut: Probably

Profit: Hey let's group up Peanut: Hey! Here, here

Peanut: Com-.. come on, COME ON BABYYY <3

Profit: Mid, mid ... Thresh is here too

Peanut: Wow, this guy ..

Peanut: >:/

Peanut: What, you couldn't do anything??

Profit: What happened

Peanut: He couldn't execute a simple ward W and Ultimate..

Peanut: Are you doing it?

Peanut: Hyung ... if you wanted to get someone

, you should've used it a second later

Profit: What, my Ultimate? Peanut: Yeah .. like for example, just now, he was ..

Peanut: Ah wait, he would've escaped anyways ..

Profit: Yeah, that wouldn't have worked

Peanut: I'm omw! Hyung!

Profit: Hey hey! Nevermind, pull back!

Peanut: Nah, nah ... wait, what the

Profit: Kata! Kata! Kata!

Peanut: I'll get him.

Profit: Okay now, follow me!

Peanut: Smite! >:)

Smite!

Peanut: Smite ... ah!

Peanut: Hyung, my Trinity Force ..

Profit: W, Flash! Lee Sin!

Profit: ... I don't think it is, he's over there

Profit: Dude, what was that lmao

Peanut: No, hyung! .. I was gonna ..-

Profit: Is it because you're tilted??

Peanut: No xD it's not like that!

Peanut: I was trying to steal it with Auto-Q ..

.. but Thresh was here

Profit: LMAO What are you doing??? Peanut: No, hyung lol

Peanut: I have a lot of deaths!

Peanut: Isn't this too much ?..

Profit: I mean .. just because you're tilted ..

Peanut: No lmao I don't have any reasons to be tilted

Peanut: Ohh.. Mid, Zed Zed Zed!! ..

Peanut: Not surrendering! >:(

Peanut: We can win this ..

Peanut: WE CAN DO IT!!

*Thresh says no*

Peanut and Profit: :OOO

Peanut: Wow, timing good!

Peanut: They ran away >:)

Profit: I'm going after them (x3)

Peanut: Stay right here, I'm gonna go bait them in

Peanut: Gragas!

Gragas!

Peanut: Gragas.

Peanut: Is he gonna do it?

Profit: I'm going

Peanut: Gragas ..

.. Gragas! .. GRAGAS ..

... GRAGAS

GRAGASSS

*Profit making plays*

Profit: Ah-ah! Wait-..

Profit: He's way too strong for you to 1v1 xD

Peanut: No, hyung xDD .. I got auto-ed twice and died

Peanut: Precisely two autos

Profit: You know, I thought I tanked pretty well, but LOL ..

Peanut: *Proudly* Two hits >:)

Profit: I thought we would win haha

Profit: Free Triple! ..

Profit: Ah .. :( Peanut: :((

Peanut: No like, hyung why did you suck so much??

Profit: You're blaming me for this game? >:/

Peanut: Mm. xd

Profit: Top lane was won over Peanut: No, but top la-... *laughs*

Peanut: That's not true ...

Profit: I won Top!

Peanut: Naah what are you talking about~ You went with 3 Doran's Rings!

Profit: No like, have you ever seen a Gragas NOT go with 3 Doran's ??

*gives up*

Peanut: Look at the damage graph ... you came 2nd

Peanut: Look at others ... look at others and then see that the ADC is 3rd.

*Wolf in the back: *rages* WHAT IS OUR TEAM DOING*

Peanut: I did great :)

Profit: Please, stop playing ADC, like what are you building LMAO

Peanut: *tired* You've done a lot hyung.

Profit: Yeah lol you too ..

*Translations by: @woochaaang*

For more infomation >> PEANUT EZREAL IS SH*T[REUPLOAD] - Peanut Stream Highlights TRANSLATED - Duration: 12:46.

-------------------------------------------

I HATE THIS - Duration: 11:28.

AHHH

least got a rims legs or something

almost 40 chest you haven't given me

fucking fuck you fucking back let me get

some bullshit thank you just give me

something dude just something give me a

sign seriously just a sign dude if this

works bro so basically just open the

chest and you yell and that is they open

a chest and you just yell fine y LD item

i want i am basically gonna get the item

packs and if singing works if singing

actually works um uh you know um let me

get the direct sound please or what

again the director nope nothing doesn't

work ok hurry up girl ok sing sing

already please get an item i SAT man who

did the email hopefully we get something

let's go open up the chest you don't

want to do a bit of butter now put some

luck nope ok and I don't have a dueling

ring as well god damn it

now you stupid battles but others chest

I want you to listen up and I want you

to listen up carefully if I open this

chest up and I don't get at least four

unique items I'm going to be very very

upset in fact I'm going to be so upset

that the anger you

you

hi

hello ladies and gentlemen hopefully all

of you today are having a lovely day and

before we get into that in case any of

you out there are interested in winning

some pre items you know I host a ton of

giveaways on a daily basis to whatever I

do is comment something down below and

to give this video a thumbs up thank you

very much so the first thing I proceeded

to do was do a little bit of crafting

because as you guys know I have to onyx

gems in the bank in which i got from

wyverns and i need 85 crafting to make

it into a fury if i use the boost now

there's a really popular method or

pretty much a little bit of a popular

method in which revolves just hopping

worlds and using the charter to use the

lunar blue you know the de lunes

superglass make and that gives up to

like 70k an hour my only issue with this

is that this place is literally packed

in a daytime I feel like it's almost

impossible to do so I ended up just

giving up at around 78 construction and

that is when I was like you know what I

actually believe i'm going to start the

Barrows grind right now now the first

step into doing very super efficiently

in my opinion you have to get barrows

teleport tabs now if you are regular

player you can buy them before I men I

mean some I meant literally bank using

these different methods and I just

believe a waste so much time by some of

the roots you guys take it's almost like

half of a trip if you just simply

teleport the Barrows I also use the

dueling dueling ring so when i'm done

with the chest i just simply teleport

the clown was i restore all of my stuff

with the portal and i just helpful with

the tab and my trip is ready to go so i

had to go and make barrows tab which is

actually a pretty tedious task because

the first thing i have to do is get a

hundred percent favor in the arceus

house now this was kind of weird on many

different levels because I mean getting

the osseous favor wasn't so bad it's

just a crazy book lady got kind of

frustrating sometimes and I call it a

crazy book lady because I've never seen

a ver inscape MPC that is so dang

fast hello yes I believe your name is al

biblia yeah I was actually only i

believe it was in Northwest middle floor

and house actually looking for a

specific book like it was pink yeah

hello hello excuse me yeah I was looking

for a book hello yeah biblia anyway with

that being said I finally got a hundred

percent Arceus favor remember guys I

pretty sure let me know this but as soon

as you get a hundred percent favor be

sure to do the mini quest and lock it in

because as you guys know if you do

different zia house favors it the

opposite house goes down but if you get

a hundred percent in the certain house

and you lock it they will never go down

no matter what so also be sure to talk

to this guy floud you give him a TK and

he actually unlocks be ferrying outside

of the arceus house now while I was so

useful for me is because I used it to

mind the dark essence blocks because

that's what you need to make the Barrows

tabs now i gotta say making the Barrows

tabs was pretty much a breeze because i

didn't realize until later on that the

bank is literally the next to the

lectern i was like literally using a

dueling ring to teleport then whatever

use the free ring and then i found out

there's a bank and I'm like oh cool so

but up inside the 500 barrows tabs are

done but we are not done haha you want

to know why because now I have to

liquidate these 1.2 k Renard's into

prayer potions remember i'm not an iron

man i can't just hmm go to the GE by

Snapdragon seeds make the potions or you

know parts or whatever i'm done no i got

actually collect the snapdragons however

i collected 1.2 k snapdragons in under

an hour you want to know how because on

a luna spell book there's a spell in

which you can tell opposed to word a

booth island i teleported a if you

notice I'm taking a certain route I

walked up down I hopped worlds and I

walked down up then I hop back to the

original world down up how bad did I

would up down like you can keep hopping

worlds

better to just hop between two worlds

because it does spawn pretty fast but if

you really want to do it efficiently

just go up pick up the snapdragons you

know up-tempo to like road 305 from duo

for go back down and then teleport back

Oh hop back to work 304 and that was a

breeze and then I proceeded to make the

prey of potions which didn't also take a

while I mean I still have like almost

500 for Nazis that's gonna equate to

almost like five paid a potion that will

be done and later on but for now if I

want to do 500 virus teleports I want to

make 600 proportions now barrows barrows

was pretty much a breeze it wasn't until

later on the second day of streaming it

I realized so it helped me again like my

stream always helps me guys you're gonna

hear this you know repetitive statement

every single upgrade video I do update

videos always my stream helping me but

someone's like hey open eyes I mean the

guy noticed that I got actually a few

barrows items the night guy was like yo

guys you do realize that you can do a

whole trip without drinking a clip of

prey potions and how that works is I you

use your prey on directs you use the

prey on careers use the leftover prey on

the rims and basically you tanked the

other three brothers and I was doing

that and like maybe 10 or dirty trips I

wasn't even drinking a sip of promotions

I would only sip one if I got maybe the

grill tunnel or dark tunnel because both

of those guys if you don't pray they are

gonna wreck you and yeah you guys know I

got bullshit mood after bullshit loop at

the bullshit loot after bullshit loop

after bullshit loop after bullshit leave

after bullshit but before we talk about

Bob bullshit loop shout out to to these

two beautiful guys who actually

supported me with a bunch of money

George gave me almost three hundred

dollars and I'm like what the hell and

seconds later sisley son else who's

watching my stream gave me three hundred

dollars that whole night I believe it

was I think I was like two days ago I

almost gathered eight hundred dollars in

donations it was almost nine hundred

dollars in donations and why I find out

Amazings I know you know to extremist

most of them make that in one day I'm

screaming on YouTube gaming

no I don't get as many viewers is people

do on twitch and people still support

the hell out of me much much love anyway

yeah I got more bullshit loop mo cuishle

and mobile she loo loo loo loo loo loo

loo loo loo loo and more bullshit lose a

few boo shit Lou later

cool

I

alright so let's quickly talk about the

giveaway so everybody can go home so

when their number one is going to be

picked via a common bought it basically

just goes to my last video and pics

around upcoming so good luck winner

number one is cursing me says you can

call me sensei I Chris I can also call

you to give away with it because you

just wanted some stuff cool when a

number two is a comment actually picked

by me myself and it's coming from a guy

who says oak guys congratulations on 50k

subscribers something something about

the Illuminati anyway but I've been said

remember if you guys are interested in

entering be sure to give this video a

thumbs up and to come and something down

below so you can be picked next with a

video what happened said bye peace out

you

For more infomation >> I HATE THIS - Duration: 11:28.

-------------------------------------------

Free Redeem GiftCard 2017 - Working Has 15 million users - Duration: 3:20.

so you want to know how to get free gift

cards fast or how to get cheap gift

cards fast huh today I'll tell you how I

save money and how I learned how to get

gift cards for free with one of my new

favorite websites watch now to learn how

to get free gift cards or how to get

cheap gift cards so you've been looking

for ways for how to get free gift card

codes or how to get free gift cards no

surveys needed and you still had no luck

finding them well you can definitely get

free gift cards or chief gift cards but

those free gift card codes that you get

with some free gift cards hack are

usually not legit with raise however you

can buy sell and earn gift cards for

free fast for those of you who don't

want a free gift cards app and just want

free gift cards online including

learning how to get free Amazon gift

cards and or how to get free itunes gift

cards with no surveys needed or a free

gift card code no surveys needed raise

has a way for you to do that you can

save a lot of money by buying discounts

gift cards or you can refer friends and

save up raise credits to get your own

raise gift cards for free don't forget

to use the Rays promo code or raise

referral code listed below for that free

five dollars credit mentioned in this

video to get you started watch now to

learn how to get gift cards for free

fast or how to get discount gift cards

fast

you

you

For more infomation >> Free Redeem GiftCard 2017 - Working Has 15 million users - Duration: 3:20.

-------------------------------------------

Koopappartement: Boekelose Stoomblekerij 66, ENSCHEDE - Duration: 0:58.

For more infomation >> Koopappartement: Boekelose Stoomblekerij 66, ENSCHEDE - Duration: 0:58.

-------------------------------------------

GMnet: Server is king (Tutorial 006) - Duration: 1:22:57.

Before we begin you need to download GMnet template 003 or above (See description).

In this tutorial we will create a server is king architecture

This means that the server hold all the cards and the clients only send minor info to the server.

The server then process the data and only send back draw info.

First we remove stuff we dont need anymore.

htme_rom_demo

remove htme_obj_player

obj_create_network_objects>Create event

//instance_create(0,0,htme_obj_playerlist);

We first need a player object that is created on the server and controlled by the client.

duplicate htme_obj_player to obj_player

Remove persistent

Delete Create event

Delete Begin step event

Delete End step event

Delete draw event

Delete 1 key event

Delete 2 key event

Add a create event and a code block

/// Init pressed_jump = false; pressed_left = false; pressed_right = false;

Ok. This will be our basic player character. We will create a player for each player that join the server.

obj_client_handler

Every player have this synced object and a REMOTE on each other.

So when obj_client_handler is created on the server we can create a obj_player at the same time.

Create event add a code block.

// Create player CreatePlayer=true; // ID of the created player PlayerID=noone;

Step begin event add code block

/// Create player

if htme_isServer() { }

if CreatePlayer { {

// Create player PlayerID=instance_create(90,500,obj_player); // Only create one player CreatePlayer=false;

We also need to destroy the obj_player when the obj_client_handler is destroyed

Add a destroy event and a code block

/// Destroy if PlayerID>-1 with PlayerID instance_destroy();

When a player disconnect the obj_client_handler is destroyed and obj_player with it.

We also need to set PlayerID to noone if the obj_player is destroyed by an enemy.

obj_player

Add a destroy event and a code block

/// Reset player with obj_client_handler { if PlayerID=other.id PlayerID=noone; }

We loop all obj_client_handler and check if PlayerID is the same as the destoyed.

If it's the same the player id who was destroyed it belonged to that clients. So we reset it.

Ok. The client will send info to steer his player. We do this by RPC. For that we need a script.

Create a new group in scripts named Network

First we need to create some help scripts

Create a new script named htme_get_instance_hash

/// htme_get_instance_hash() return htme_mp_player;

htme_mp_player is the player hash of a synced instance. All synced instances got this variable to define the owner of it.

Create a new script named htme_get_last_rpc_hash

/// htme_get_last_rpc_hash(); return obj_htme_rpc.Last_From;

Last_From is a variable from the RPC object that hold the last received player hash.

Ok. Now for the steer script.

Create a new script named scr_Network_Steer_player

/// scr_Network_Steer_player(data string);

var data_string=argument0;

// Find right obj_client_handler with obj_client_handler { }

// Check if this instance belong to the RPC sender if htme_get_instance_hash()=htme_get_last_rpc_hash() { }

// Give player id the info if PlayerID>-1 { }

with PlayerID { }

pressed_jump = real(string_char_at(data_string,1)); pressed_left = real(string_char_at(data_string,2)); pressed_right = real(string_char_at(data_string,3));

Ok. This script will take a string with data and each number in the string represent a command state.

This dont make sense yet. But we now come to the key logger.

The keylogger log keys we press and send them to the server and to our player there.

Create a object group named Network

Create a new object obj_player_keylogger

Add Create event and a code block

/// init

// Init logger pressed_jump[0] = false; pressed_left[0] = false; pressed_right[0] = false;

// Last value logger pressed_jump[1] = false; pressed_left[1] = false; pressed_right[1] = false;

Add a step event and a code block

/// Logger

Logger_new[0] = keyboard_check(vk_space); Logger_new[1] = keyboard_check(vk_left); Logger_new[2] = keyboard_check(vk_right);

// Check if different from last send and generate send string var FoundChange=false var SendString="";

for (var i=0; i<array_length_1d(Logger_new); i+=1) { }

// Check for change if Logger_new[i]!=Logger_last[i] { }

FoundChange=true;

// Add to send string SendString+=string(Logger_new[i]); // Save last Logger_last[i]=Logger_new[i];

// Send if FoundChange { }

htmerpc_send(htme_hash(),scr_Network_Steer_player,obj_server_handler.htme_mp_player,SendString);

First we get the new key states and save them.

We compare them to the last sended values and generate a send string.

The string is simply a 1 or 0 depending on the key state and we just put them in a string.

If there is a change in the keys we send the string to the server that give our player new info.

We dont need a return value from the RPC so we dont use a RPC handler. We simply use the RPC send script.

We need to create the key logger in the room.

obj_create_network_objects

This object will create and destroy the instance when needed.

Create event

instance_create(0,0,obj_player_keylogger);

Destroy event

with obj_player_keylogger instance_destroy();

We are now ready for a first test.

Create a server.

A obj_client_handler is created that also create a obj_player and we "link" the client_handler and the obj_player by saving the obj_player id in obj_client_handler.

The obj_player_keylogger was also created and when we press a key it detect the change and send it to the server.

Press the arrow keys.

The server get the info and search for the obj_client_handler that give us the obj_player id.

The server now set the info to the obj_player and we start to move the player.

When we dont press any keys the change is detected and send a new info string to the server.

As you know P1 is the server so when we send the RPC the engine will detect that and not actually send anything.

It will just simulate it and run the script.

Now connect P2

When P2 is connected a obj_client_handler is created on P2 and then synced to P1 as a REMOTE.

When the obj_client_handler REMOTE object was created on the server it created a obj_player.

P2 also created a obj_player_keylogger to check changes and send a info string to the server.

Use the arrows to move the player.

You see that we can move our player on the server but we dont see anything on P2.

Thats because the obj_player is only created on the server.

Now we will make the server send draw info to the clients. And make the client draw the info.

First we must collect all players positions, sprite_index and image_index.

Bundle everything together and send it.

The client can then use that info and draw it on his screen.

We can use obj_server_handler to collect and draw the info for the clients.

But first we need to collect and bundle the draw info

obj_server_handler

Create event

// Define collector variables Collector_que=noone saved_arrays=noone;

We will use this later in the destroy event. So we must init it first.

Add a new code block in the create event

/// Collector if htme_isLocal() { }

// Collect queue Collector_que=ds_queue_create();

// Objects to collect Collector_objects_array[0]=obj_player;

// Sync variable data_chunk=""; data_chunk_last="";

// Steps to collect before send Collector_collect_steps=1; Collector_collect_counter=0;

// Buffers to use

Collector_buffer_array[0]=buffer_s16; // x (-32,768 to 32,767)

Collector_buffer_array[1]=buffer_s16; // y (-32,768 to 32,767)

Collector_buffer_array[2]=buffer_u16; // sprite_index (0-65,535)

Collector_buffer_array[3]=buffer_u8; // image_index (0-255)

We will collect all data in a queue. We put the objects we want to collect data from in an array.

Last we set a counter for one step before we will send the info. We will experiment with this later :-)

We create an array for the buffer types depending on what value we will collect.

We also need to clean if destroyed

Add a destroy event add a code block

/// Clean if htme_isServer() { }

if Collector_que>-1 { }

ds_queue_destroy(Collector_que);

Step begin event

Add a new code block

/// Collector if htme_isServer() { }

// Loop object to count them var collect_id_list=ds_list_create();

for (var i=0; i<array_length_1d(Collector_objects_array); i+=1) { }

with Collector_objects_array[i] ds_list_add(collect_id_list,id);

// Loop objects to sort them depending on ther depth // Create grid to hold id and depth so we can sort it later

var instance_grid=ds_grid_create(2,ds_list_size(collect_id_list));

// Define temp var var temp_instance;

for (var i=0; i<ds_list_size(collect_id_list); i+=1) { }

temp_instance=collect_id_list[| i]; instance_grid[# 0,i]=temp_instance; instance_grid[# 1,i]=temp_instance.depth;

// Sort the grid after depth ds_grid_sort(instance_grid,1,false);

// Loop instances and collect current info for (var i=0; i<ds_list_size(collect_id_list); i+=1) { }

// Get instance from grid temp_instance=instance_grid[# 0,i];

// Get info from instance with temp_instance { }

// Collect info chunk ds_queue_enqueue(other.Collector_que,x,y,sprite_index,image_index);

// Clean ds_list_destroy(collect_id_list); ds_grid_destroy(instance_grid);

// Count up collected steps Collector_collect_counter+=1;

// Create send string when countdown is done if Collector_collect_steps<=Collector_collect_counter { }

// Reset countdown Collector_collect_counter=0;

// Check if we collected something if ds_queue_empty(Collector_que)=false { }

// Create buffer var myBuffer=buffer_create(2048,buffer_grow,1); // Temp variable var theValue=0;

// Count the buffer array so we know how big each collection chunk is var infoChunk=array_length_1d(Collector_buffer_array);

// Loop collected info and turn it to a buffer while (!ds_queue_empty(Collector_que)) { }

// Loop buffers we use and get chunk values for (var j=0; j<infoChunk; j+=1) { }

// Get the value from the queue theValue=ds_queue_dequeue(Collector_que);

// Put the value in the buffer with the buffer type we set in the create event

buffer_write(myBuffer,Collector_buffer_array[j],theValue);

// Convert the buffer to a string data_chunk=scr_Buffer_To_String(myBuffer,true); EDIT: also add: // Clean buffer_delete(myBuffer);

// Check if different from last send if data_chunk!=data_chunk_last { }

// Send to all players htmerpc_send(htme_hash(),scr_Network_Draw_Info,"",data_chunk);

// Save as last data_chunk_last=data_chunk;

else { }

// Send empty to all players htmerpc_send(htme_hash(),scr_Network_Draw_Info,"","");

else { }

// Add new step chunk // This will work as a stop when the client process the data

ds_queue_enqueue(Collector_que,-1000,-1000,0,0);

Ok. What do we do here?

// Loop object to count them

We need to sort the instances after depth so we can collect the info in the depth order. Else depth wont work.

// Loop objects to sort them depending on the depth

We create a grid and save id and depth then we sort after the depth

// Loop instances and collect current info

Loop all instances in the depth order and collect info

// Count up collected steps

Count up the step counter by 1

// Create send string when countdown is done

If the step counter is done we create and send the string

// Add new step chunk

If the step counter is not done we save a special "new step" set. When the client read this he knows we sent more than one step.

// Check if we collected something

We check if we collected something, who knows all players may be gone.

// Send empty to all players

If all players is gone we just send an empty string to the clients so they stop draw.

// Create buffer

We create a buffer that will hold our collected info.

// Loop collected info and turn it to a buffer

We loop the collected info and step each chunk that is now 4 pieces (x,y,sprite_index,image_index)

// Loop buffers we use and get chunk values

We loop the buffer array and add each value collected and get the buffer type from the buffer array

// Convert the buffer to a string

Convert the buffer to a string so we can send it via RPC to the clients

// Check if different from last send

If the send is different from the last time we send it else we dont need to send it.

Ok. Now we collect and send the data to the clients. But the client need to process the received info.

We need to setup some variables in the obj_server_handler when the REMOTE is created on the clients.

obj_server_handler>Create event

else { }

// draw_array[x]. Each index hold another array with one draw chunk. This is what we draw to the screen

Draw_array=noone;

// Saves all incomming data chunks, each queue got a draw_array[x] that contain chunk arrays.

saved_arrays=ds_queue_create();

We also need to clean this if it get destroyed

Destroy event

else { }

if saved_arrays>-1 { }

// Destroy saved arrays ds_queue_destroy(saved_arrays);

Ok. The server will make the client run scr_Network_Draw_Info and provide a string with info.

Create a new script scr_Network_Draw_Info in the Network group

/// scr_Network_Draw_Info(data_string);

// If server then exit if htme_isServer() exit;

// Get data chunk var data_string=argument0;

// Check if empty if data_string!="" { }

// Convert to buffer var MyBuffer=scr_String_To_Buffer(data_string);

// Continue in the obj_server_handler with obj_server_handler { }

// buffer value array define var theValue_array=noone; // define draw array var new_draw_array=noone;

// Count the buffer array so we know how big each collection chunk is var infoChunk=array_length_1d(Collector_buffer_array);

// Loop buffer while (buffer_tell(MyBuffer)<buffer_get_size(MyBuffer)) { }

// Loop buffers we use and get chunk values for (var j=0; j<array_length_1d(Collector_buffer_array); j+=1) { }

// Get value from buffer theValue_array[j]=buffer_read(MyBuffer,Collector_buffer_array[j]);

// Check if new step chunk if theValue_array[0]=-1000 and theValue_array[1]=-1000 and theValue_array[2]=0 and theValue_array[3]=0 { }

// Found new step chunk // Put the draw array into the saved arrays ds_queue_enqueue(saved_arrays,new_draw_array);

// Reset new draw array, so its ready for next step info new_draw_array=noone;

else { }

// Draw info, save in new draw array if is_array(new_draw_array) { }

// Add value array to new draw array new_draw_array[array_length_1d(new_draw_array)]=theValue_array;

else { }

// Set first value array in draw array new_draw_array[0]=theValue_array;

// Unlink the array from the new draw array theValue_array=noone;

// Put new draw array into the saved arrays ds_queue_enqueue(saved_arrays,new_draw_array);

// Clean buffer_delete(MyBuffer);

else { }

// Continue in the obj_server_handler with obj_server_handler { }

// Add noone in saved ds_queue_enqueue(saved_arrays,noone);

Ok. What do we do here?

// Check if empty

We check if we got an empty draw then we set to draw a empty step.

// Convert to buffer

We convert the string back to a buffer to get info from.

// Loop buffer

We loop the buffer and step one chunk (4 pieces in each chunk right now)

// Loop buffers we use and get chunk values

Read the buffer and get the buffer type from our buffer array. We add the value to an array.

// Check if new step chunk

If it has the special "new step" values we save the new draw array we generated until now and start with a empty new draw array for the next step in the buffer.

// Draw info, save in new draw array

Save the value array to the new draw array

// Put new draw array into the saved arrays

Save the last draw array

Ok. Now we processed the received draw info and saved all the new draw arrays in a queue.

We now need to get the first draw array from the queue and draw it on the screen.

obj_server_handler

Create a draw event and add a code block

/// Draw

// Only draw if not on the server if !htme_isServer() { }

// Get new draw array from the save queue, if any if ds_queue_empty(saved_arrays)=false { }

// Get next step to draw Draw_array=ds_queue_dequeue(saved_arrays);

// Get later step if we got too many while (ds_queue_size(saved_arrays))>Collector_collect_steps*2 { }

// Get next step to draw Draw_array=ds_queue_dequeue(saved_arrays);

// Check if draw array got info if is_array(Draw_array) { }

// define draw chunk var chunk_array;

// Loop array and draw each chunk for (var i=0; i<array_length_1d(Draw_array); i+=1) { }

// Get a chunk chunk_array=Draw_array[i];

// Draw chunk draw_sprite(chunk_array[2],chunk_array[3],chunk_array[0],chunk_array[1]);

Ok. What do we do here?

// Get new draw array from the save queue, if any

If there is a draw array saved in the queue we get it, else draw the last one

// Check if draw array got info

It may be noone if there is nothing to draw so we check for that

// Loop array and draw each chunk

Loop the draw array and grab a chunk and draw it

Ok. Now we can test it.

Now the client can see the players too.

Now for the pros and cons.

The cons is that you may notice that when P2 move. It takes about 20-40 milliseconds before the player actually move. This is fine in LAN but in Online you will notice it even more.

You can only have one room. So if you want shops or other floors in your game you need to add them in other sections in the same room.

The pros is that all objects will always be in perfect sync. You don't need to resolve paradoxes.

We want to keep these pros because they are simply too good. But we want to make the game work online too.

So how do we do that?

Well it depends on what game you are creating.

In the next tutorials we will add our server architecture to some games.

But before we do that we need to set GMnet to use delta time.

With delta time enabled you dont need to worry if the game lag and clients sudenly disconnects.

Scripts>Gmnet>htme>htme_config

use_delta_time=true;

Ok. Thats it.

We want to add our server to the extension so we can import it to the games we will make go multiplayer.

Extensions>GMnet>Export resources

First remove everything

Then click add all.

We dont want to import the htme demo so remove:

Sprites>htme_demo

Fonts

objects>htme_demo>game We keep the menu object.

Rooms>htme_rom_demo

Rooms>htme_rom_demo2

We keep the Lobby and the menu rooms.

Save

Ok. Now we export the extension as GMnetServerIsKing

We also export WinDev so we can use the dual windows.

Ok. We now have two extensions ready to be imported to a game.

In the next tutorial we will import it to one of the demo games in Game maker.

For more infomation >> GMnet: Server is king (Tutorial 006) - Duration: 1:22:57.

-------------------------------------------

WORD OF THE DAY Episode 16 | Is it a cold? - Duration: 0:34.

Good morning, fellow logophile!

This is Ellybot the Science Nut.

Welcome to Day 16 of the Word of the Day series.

Today's word is syndrome It's a noun

The definition of syndrome is that it's a combination or pattern of signs and symptoms

that consistently occur together which would indicate a social or medical condition.

Thank you for stop by and I hope you have a great day!

Until next time, Bye!

For more infomation >> WORD OF THE DAY Episode 16 | Is it a cold? - Duration: 0:34.

-------------------------------------------

Is Antarctica a Dark & Misterious land Of Ice? be the judge - Duration: 7:09.

Is Antarctica a Dark & Misterious land Of Ice? be the judge

Antarctica is a land of ice

and also a land of mystery

and bark secret

it have been explore from ages

but still not understood

but

see the few things been discovered

For more infomation >> Is Antarctica a Dark & Misterious land Of Ice? be the judge - Duration: 7:09.

-------------------------------------------

Take the "old" out of gold - Modern mining by Goldcorp - Duration: 3:09.

ATLAS COPCO PRESENTS

TAKE THE "OLD" OUT OF GOLD MODERN MINING BY GOLDCORP

Here you are right now, in the middle of the James Bay territory

we refer it to be Eeyou Istchee which is the Cree land.

So we are guest here, far from every infrastructure.

We have to build our own infrastructure, our road, powerline, airport.

It is like a mini town on its own.

We are on our own, so we can only depend on our self.

WHO ARE GOLDCORP?

We are a Canadian mining company based in Vancouver.

We are mainly interested by gold so this is a pure gold mine

in the new jurisdiction in Northern Québec.

WHAT IS YOUR RELATION TO ATLAS COPCO?

Since I started in the mines more than 25 years ago

we were already working with Atlas Copco.

We had a great success and we were seen as the leaders

in terms of use of technologies.

Of best in class equipment

that allows us to operate safely with the lowest cost of the industry.

We have been very impressed.

These guys were clearly

almost a quarter of a century ahead of everybody else.

They were developing technology ideas that we were not even thinking about.

Today we are using these tools and technologies for the safety of our people,

that clearly enhance the way we operate.

And they continue to develop and push technologies to the point we are now.

We are using the equipment from surface

so that we can continue operation when we cannot be under ground.

And continue all the processes to obtain our gold

to have a low cost mining operation.

HOW HAS THE SIMBA TELE-REMOTE HELPED YOUR OPERATIONS?

The Simba is the perfect tool for us.

First of all we have a very complex ore body, so the Simba is very flexible.

Ore deposit here at Éleonore is very complex.

Sometimes some areas of the deposit is quite straight, another is like a snake.

So it is important that we have a drill that can adapt to all these shapes.

It was important that we have an equipment that can adapt to this

to allow us to have the best performance possible in this kind of environment

to reduce dilution.

So that we can increase our margins at the end of the day.

The Simba is flexible, robust, efficient, high productivity.

And if you ask the operators what they think they wouldn't change it.

No way.

Không có nhận xét nào:

Đăng nhận xét